z-index が効かない
CSSでz-indexを設定しても要素の重なり順が変わらない問題
概要
CSSでz-indexを設定しても要素の重なり順(前後関係)が期待通りにならない問題です。多くの場合、スタッキングコンテキストの理解不足が原因です。
症状
| |
原因
- positionが未設定: z-indexはpositionプロパティと組み合わせて使用
- スタッキングコンテキスト: 親要素が別のスタッキングコンテキストを形成
- 親要素のz-index: 親の z-index が子を制限
- isolation プロパティ: 予期しないスタッキングコンテキストの作成
- transform/opacity: これらのプロパティもスタッキングコンテキストを作成
解決策
1. positionを設定
| |
2. スタッキングコンテキストを理解
| |
3. 親のz-indexを確認・調整
| |
4. isolationで新しいコンテキストを作成
| |
5. モーダル/ドロップダウンの対処
| |
6. Flexbox/Gridでのz-index
| |
7. CSS変数でz-indexを管理
| |
8. デバッグ方法
| |
スタッキングコンテキストを作成するプロパティ
position: absolute/relative/fixed/sticky+z-index(auto以外)opacity< 1transform(none以外)filter(none以外)perspective(none以外)isolation: isolatewill-changemix-blend-mode(normal以外)-webkit-overflow-scrolling: touch
よくある間違い
- z-index の値を大きくすれば解決すると思い込む
- 親要素のスタッキングコンテキストを考慮しない
- position: static で z-index を使おうとする
関連エラー
参考リンク
CSS の他のエラー
この記事は役に立ちましたか?