Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2025年のz-index設計を考える

Avatar for TAK TAK
May 13, 2025

 2025年のz-index設計を考える

社内勉強会用

またしても破綻しがちな z-index の設計を考える。

Avatar for TAK

TAK

May 13, 2025
Tweet

Other Decks in Programming

Transcript

  1. [概要] z-index は要素の重なりを制御するプロパティ z-index プロパティは整数値(正の数、ゼロ、負の数)で指定することができる position が static(初期値)以外の場合、または flex, grid

    アイテムの場合に機能する z-index に何も指定しない(auto)の場合、または同じ正の数、ゼロの場合は、 HTML 順に後ろに配置された要素が上に重なる z-index が負の数の同じ要素は前に配置された要素が上に重なる
  2. スタッキングコンテキストは生成せずに常にグローバルで戦いたい… が、残念ながらスタッキングコンテキストは簡単に生まれてしまう position の値が absolute あるいは relative で、かつ z-index の値が

    auto 以外 position の値が fixed あるいは sticky display: flex あるいは display: grid の子要素で、かつ z-index の値が auto 以外 opacity の値が 1 未満 mix-blend-mode の値が normal 以外 transform、filter、perspective、clip-path、mask の値が none 以外
  3. [考え方] z-index を「絶対的」なものか「相対的」なものか考える 絶対的なもの → 固定配置の重ね順 (追従ヘッダーやその他 fixed や sticky

    な要素) 相対的なもの → コンポーネントルートを基準とした重ね順 (Block を基準とした Element の重ね順)
  4. 原則的に z-index は使わずに DOM の順 番で制御する 指定する必要がある場合は 1(前面) か -1(背面)

    のみ使用する -1 はほぼ背景用 ポイント 相対的な z-index は なるべく使わないように 頑張る
  5. スタックコンテキストの生成ありきで z-index は管理する Elementがコンポーネントの外側に出 ないようにして、他のコンポーネント の z-index との衝動を防ぐ ポイント コンポーネントには

    isolation:isolate を指定して スタッキングコンテキストを生成しておく isolation プロパティはスタッキングコンテキストの生成するか?を定義するプロパティ 他の手段より副作用が少ないのでスタッキングコンテキストを能動的に生成する場合は isolation: isolate を使用する
  6. 「絶対的な z-index は 10 の倍数でグローバル変数で管理する」 「相対的な z-index は 1(前面) か

    -1(背面) のみ使用する」 でも、絶対誰かが z-index: 2 とかやりだすよね…😅 👆️
  7. z-index はスタックコンテキストありきで管理する z-index は絶対的 or 相対的なもので ジャンル分けして考える コンポーネントに 相対的な z-index

    を持たせない 治安悪化防止のために z-index の数値指定をやめよう (変数しか許容しないようにしよう)