「:hover」「z-index」を組み合わせて使用すると、正常動作しないことがある

CSSz-index

Gist

 状態:未解決  閲覧数:2,603  投稿日:2015-01-02  更新日:2015-01-02
画像マウスオーバーした際、transformの「rotate × scale」後に「z-index」が適用されず悩む
・「並べて表示している画像」の内、最後の画像だけ、マウスオーバーした際、最前面に表示される
・それ以外は、全て他の画像の後ろで拡大されてしまう
・全然意味が分からない!
・元旦なのに!(関係ないけど…)


最終的に


HTML要素の配置順を変更したら、意図した通り動作するようになった
・どうしてこうなるか、全く理解できないけれども…

修正前
<span class="targetClass"><a href="">
<img src="" width="160" height="108">
</a></span>


修正後
<a href=""><span class="targetClas">
<img src="" width="160" height="108"></span>
</a>


調査履歴 / 試してみたけどうまくいかなかった、もしくは理解できなかった内容

 閲覧数:316 投稿日:2015-01-02 更新日:2015-01-02 

z軸


z-indexで重なりが直らない場合はtransformのz軸を疑ってみる
・translate3dのz軸ってz-indexよりも強く(?)効果が発揮される
・translate3d未使用のため、遭遇ケースとは異なる(と思う)


jQuery


CSSではなくjQueryで指定
・試してみたが、遭遇したケースでは効果がなかった
$('#content img').mouseover(function () {
   $(this).css("z-index", "9")
});

$('#content img').mouseout(function () {
   $(this).css("z-index", "0")
});



再レンダリング


表示に関する何かの属性を明示的に変更しなければ、z-indexを反映させた再レンダリングを行ってくれない
・IE7に限定した話?
・今回遭遇したケースの環境は、Chromeなので関係ないかも…


drawback


css "drawback" - not webflow.
・関係ありそうな気がする
・英語を理解できない


stacking contexts


z-index is canceled by setting transform(rotate)
・transformを疑った理由は、「transform(rotate)を設定すると、z-indexがキャンセルされる」との質問をstackoverflowで見つけたため

スタック文脈
・HTML 要素を位置指定し、z-index 値を与えるとスタック文脈が作成される(完全な不透明でないとき)
・子要素の z-index 値は、その親要素に対してのみ意味を持つ
※スタック文脈は HTML 要素の階層構造の部分集合

つまり?
・z-indexが効かない、ということは、z-index 値を与えたスタック文脈の、HTML 要素の階層構造がおかしい、ということ

後で気が付いたので、未検証

 閲覧数:262 投稿日:2015-01-02 更新日:2015-01-02 

relative


画像要素に「position:relative」付与
CSS3 Rotation and Scaling on same elements messes up "z-index"?

仮結論

 閲覧数:253 投稿日:2015-01-02 更新日:2015-01-02 

予想


「:hover」「z-index」を組み合わせて使用するためには、隣り合う要素である必要がある
・今回の敗因は、「:hover」指定した「taegetClass」クラスと「img」要素が離れていたことが原因
・transformの「rotate × scale」とか、全く関係ない気がする
・未検証だけど…


CSS


.taegetClass:hover img{
   z-index:999;
}


今後について

 閲覧数:267 投稿日:2015-01-02 更新日:2015-01-02 

ポイント


・下記3つを押えておけば、z-indexは理解できたも同然だ

A.新しいスタッキングコンテキストが何れかの要素上に形成することができる3つの方法
B.スタッキングされる要素の順序の決定
C.同じスタッキングコンテキスト内での重なり順

What No One Told You About Z-Index


いつか


私はまだ理解していない
・いつか取り組む予定
・先延ばしにする理由は、ブラウザ実装により、細かい挙動とか随時変わりそうな気がするから


感想


・z-indexは奥が深い
・そして………………























\ z-index 超分からない /


「z-index」が効かない時は「-1」を指定してみる

「z-index」が効かない時は? / 「position:relative」を指定してみる / 「z-index:-1」を指定してみる



類似度ページランキング
順位 ページタイトル抜粋
1 「z-index」が効かない時は「-1」を指定してみる 49
2 resizeが効かない場合は、min-heightを設定してみる 45
3 「Fireworks」後継として、「Gravit Designer」を使用していくことを決定  40
4 「z-index」が効かない時は? / 「position:relative」を指定してみる / 「z-index:-1」を指定してみる 40
5 ページで使用されている「id名」「class名」をChromeで取得したい   39
6 背景画像がどうしても表示されない → 「clear:both;」を挿入してみる 39
7 textareaのスクロールバーが横へはみ出す場合は、「box-sizing:border-box;」を指定する 38
8 一つの要素に対して「id 属性値」を複数指定することは出来ない 38
9 作成した素材がどうしても見つからないときは、「png形式」を疑ってみる 36
10 デフォルトの「Google Chrome」ではURL欄にwwwが表示されないため、「Microsoft Edge」を使用する 34
11 textareaを手動リサイズできない時は、ブラウザを落としてみる 34
12 が正常動作しない理由 33
13 Chromeブラウザは、ユーザーという単位で情報管理している(Cookieを使用する場面もあるが、必ずしもCookieだけに頼っているわけではない) 32
14 「レイアウト崩れ」がどうしても解決しない → Chrome「デベロッパーツール」で怪しいと思った要素を、正常表示されるまで削除し続けていく 32
15 display:flexのorderプロパティを使用すると、「:first-child」「:last-child」「隣接兄弟結合子」の効果は上書きされる 32
16 「正常動作する最小構成単体デモ」と挙動が異なる理由は、 32
17 テーブル枠線がどうしても消えない時は「border-collapse: collapse;」 31
18 Firefox7 「このサイトのパスワードを保存しますか?」を非表示にする(案) 31
19 ボタンクリックした際、テキスト選択状態になるのを防止するためには、「user-select: none;」 31
20 「position:sticky;」がどうしても効かない →
を一旦削除してみる →
に「display:inline;」を指定
31
2021/7/24 20:11 更新
週間人気ページランキング / 7-17 → 7-23
順位 ページタイトル抜粋 アクセス数
1 RGB ⇔ Lab | 色変換(色) 53
2 血の色 / #b30000 / #360800 / #ff0000 | 色 26
3 Design 0 23
4 Windows10で「Google Chrome」が常に最前面に表示される。「アクティブウィンドウ」が最前面で表示されない → 解決方法存在しない | Google Chrome(ブラウザ) 17
5 HTML5では、「input 要素」「button 要素」を「フォームタグ」の外で直接記述しても良い | HTML5(HTML) 15
6 HSLとHSVの違い | 色変換(色) 14
7 「マウスオーバー」「ロールオーバー」「ホバー」の違い | CSS 13
8 「bgcolor」「background-color」「background」の違い | CSS 12
8 「CSSキーフレームアニメーション」実行後のCSS設定 | アニメーション 12
9 RGBの種類 / ビットカラー | RGB(色) 11
10 画面キャプチャ | Chrome 拡張機能(ブラウザ) 9
11 「overflow」効果を打ち消すスタイルシートは、「overflow: auto;」 8
11 「:hover」「z-index」を組み合わせて使用すると、正常動作しないことがある | z-index(CSS) 8
11 Chrome でキャッシュを効かさない | Google Chrome(ブラウザ) 8
12 16進数カラーコード / 2進数 7
12 コズミックブルーが何色か分からない | 色 7
13 使用していないCSSをチェックする、標準的な方法を知りたい | CSS 6
13 100/7%ではなく100%/7。(100/7)%ではなく(100%/7) | CSS 6
13 グラデーション練習 | Fireworks 8(Fireworks) 6
13 「属性」「プロパティ」「アトリビュート」の違い | CSS 6
2021/7/24 1:01 更新