CSS

z-index

中級

読み方:ゼットインデックス|英語:Z Index

要素の重なり順を指定するプロパティで、数値が大きいほど手前に表示されるよ。positionが必要。いつ使う? モーダル(ポップアップ)を他の要素より手前に表示したい、ドロップダウンメニューが他の要素に隠れないようにしたいときに使うよ。間違いやすいポイント: z-indexはposition: static(デフォルト)の要素には効かないよ。必ずposition: relative; などを一緒に指定しよう。また、z-index: 9999 のような大きな値を乱用すると管理が大変になるよ。

やさしい説明

z-indexは、要素の重なり順を指定するプロパティです。数値が大きいほど手前に表示されます。

机の上に紙を重ねるイメージです。一番上の紙が一番手前に見えますよね。z-indexの数値が大きい要素が「一番上の紙」になります。

注意点として、z-indexは position: static(デフォルト)以外の要素にしか効きません。relative、absolute、fixed、sticky のいずれかが必要です。

図解:z-indexの重なり

z-indexの数値が大きいほど手前に表示される

具体例・使い方

/* モーダル(最前面) */
.modal { position: fixed; z-index: 1000; }

/* ヘッダー(スクロールしても手前) */
.header { position: sticky; top: 0; z-index: 100; }

/* 背景の後ろに配置 */
.bg-decoration { position: absolute; z-index: -1; }

いつ使う?

モーダル(ポップアップ)を最前面に出すとき、固定ヘッダーを他の要素より手前にするとき、ドロップダウンメニューを重ねて表示するときに使います。

間違いやすいポイント

❌ positionを指定せずにz-indexを書く

/* ❌ position: static(デフォルト)では効かない */
.box { z-index: 100; }

/* ✅ positionを指定する */
.box { position: relative; z-index: 100; }

❌ z-indexの数値をむやみに大きくする

z-index: 99999 のような巨大な値は管理が困難になります。10, 100, 1000 のように段階的に使いましょう。

よくある疑問

Q: z-indexが効かないのはなぜ?

A: positionがstatic(デフォルト)のままだと効きません。position: relative; を追加しましょう。親要素のz-indexも影響します。

Q: z-indexの値はどのくらいにすべき?

A: 1, 10, 100のように段階的に設定するのがおすすめです。モーダル=100、ヘッダー=50、ドロップダウン=30のように役割で決めましょう。

Q: スタッキングコンテキストとは?

A: z-indexの比較が行われるグループのことです。親要素にz-indexやopacity等を指定すると新しいグループが作られ、子のz-indexは親の中でしか比較されません。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A