1
0

More than 3 years have passed since last update.

z-indexが効かない!? それ、スタックコンテキストのせいかも

Last updated at Posted at 2020-11-06

はじめに

要素を重ねる時、z-indexの数字だけ意識していませんか?
スタックコンテキストを意識していないとz-indexの値をいくら大きくしても要素が思い通りに前面に来ない!という事があります。
今回は、そのスタックコンテキストを取り扱っていきます!

スタックコンテキストとは

positionプロパティの値がstatic以外で、z-indexプロパティの値がauto以外の場合に生成される文脈 だそうです。
うーん、わかりづらい!笑

実践

とりあえずベースとなるHTMLとCSSを作成


See the Pen
stack-context1
by Daichi Nabeshima (@nabeshi)
on CodePen.


次に.red, .blue, .greenにz-indexを付与する。


See the Pen
stack-context1
by Daichi Nabeshima (@nabeshi)
on CodePen.



z-indexが-100なのに最前面に来ているだと。。。


ここでもう一度スタックコンテキストの定義を思い出してみましょう。

positionプロパティの値がstatic以外で、z-indexプロパティの値がauto以外の場合に生成される文脈

.red, .blue, .greenはこの条件をクリアしているのでスタックコンテキストを生成している状態になります!

html要素はデフォルトでルートスタッックコンテキストを生成しています。
また、スタックコンテキストは必ずどこかのスタックコンテキストに所属します。

.red.blueはルートスタックコンテキストに所属し、.green.blueのスタックコンテキストに所属します。

z-indexは所属するスタックコンテキスト内での順番を指定するプロパティなので、-100の値を設定しても所属するコンテキストが異なるため順番に変動がなかったということになります。

まとめ

  1. positionプロパティの値がstatic以外のかつ、z-indexプロパティの値がauto以外の要素がスタックコンテキストを生成する
  2. html要素は上記の条件に該当せず、必ずルートスタックテキストとなる
  3. スタックコンテキストは必ずどこかのスタックコンテキストに所属する
  4. z-indexは所属するスタックコンテキスト内での順番を指定するプロパティ
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0