フォロー

🧩 エンジニア豆知識 #6── z-index は 100? 1000? MAX_INT?「数字インフレ地獄」に終止符を打つレイヤー設計🔥

戦え、エンジニア諸君!!
モーダルが沈むたびに z-index: 9999; を書き足し、 気づけば 2147483647(32bit MAX)まで桁が暴走——
そんな闇のレイヤー戦争に終止符を打つッ!
今日は「いくつまで使う?」問題
≪仕組み → 各FW慣例 → 設計3パターン → 団長流ベスト≫ で一気に整理だ!


⚙️ 1. まず “島” を理解せよ

数字の前にスタッキングコンテキスト(島)を忘れるな。
島を跨げば 999999 も無力。 (島の詳細は #4 で解説済 ― リンクも可)


📊 2. 主要フレームワークのデフォルト比較

FWドロップダウンModalTooltip備考
Bootstrap 5100010501080桁飛ばし採用
Tailwind CSS4050500–50レンジ
Material UI110013001500100刻み

学び:「絶対値」は決まっていない。 要は衝突しなければいい人間が把握しやすい体系であれば勝ちだ。


🧩 3. レイヤー設計 3 パターン

パターンレンジ使い所メリット/デメリット
A. 0–10 フラグ方式0: ベース, 5: 固定ヘッダ, 10: モーダル小規模/LP数字が小さく把握◎ / 余白少
B. 0–99 テーマ階層10: メニュー, 20: ドロップ, 90: オーバーレイ中規模SPA2桁管理しやすい / 大型PJで不足
C. 100桁飛ばし100, 200, 900, 1000…大規模+外部Widget余裕◎ 衝突回避 / 数字が膨らむ

▶ 団長推奨:B + 変数管理(次章で詳述)


🛡️ 4. 団長流ベストプラクティス ― 変数で制圧

/* root で一元管理 */
:root{
  --z-base: 0;
  --z-header: 10;
  --z-dropdown: 20;
  --z-sticky: 40;
  --z-modal: 90;
  --z-overlay: 100;
}

/* 使うとき */
.modal{ z-index: var(--z-modal); }
  • 可読性UP:命名で役割が一目瞭然
  • リファクタ即時:数値をrootで動かすだけ
  • 衝突回避:外部ウィジェットは 200+ を予約

大型プロジェクトは JSON で管理 → Stylelint で静的チェックがベター。


💥 5. 失敗パターン集(実話)

失敗症状対策
999999 インフレ他チームが 1000000 を超えてくる変数 or Linter を導入せよ
CMS ウィジェット重ねチャットがモーダルを覆う外部Widgetは最後に読み、
島を確認してバッファを切る
同一島で数字衝突Sidebar と Popoverが互いに潰し合うスタッキングコンテキスト分離
(position: relative; z-index:0)

🔗 推奨ツール & 書籍

CSS設計完全ガイド ― 保守しやすいCSSの設計と実装入門

レイヤー設計・命名戦略を体系化。変数管理とスタッキング解説も充実!
Amazonで見る

※リンクはアフィリエイトを含みます。


📝 まとめ

  • z-index は “数字” より “島” を見ろ。
  • チーム開発は 変数+Linter でインフレを封じ込め。
  • 桁飛ばし or 0–99 レンジ、どちらでも守るべきは統一ルール

🔥 団長の喝――レイヤー戦争を鎮めよッ!!

闇雲な 9999 連打に別れを告げ、 設計の刃 でレイヤーを制御せよ。
今日から var(--z-dropdown) を打ち込み、 戦え、エンジニア諸君ッ!UI戦場の層を支配するのは“お前の設計力”だッ!!🔥🔥🔥

コメントする