2024.06.18

HTML・CSS

z-index: -1;指定時の注意点

z-indexプロパティの重なりで、z-index: -1;を指定した時の注意点を確認します。
デモページはこちら

以下のhtml構造で確認します。クラス名div-childのdivタグに、順番にオレンジ・緑・青の背景色をつけます。

<div class="contents">
  <div class="div-parent">
    <div class="div-child"></div>
    <div class="div-child"></div>
    <div class="div-child"></div>
  </div>
</div>

CSSでposition、z-indexの指定がない場合、htmlの記述が後の要素が上に重なります。

オレンジにposition: relative、z-index: 3;、緑にposition: relative、z-index: 2;、青にposition: relative、z-index: 1;指定すると、この重なりが逆向きになります。

問題は次です。青のz-index: 1を、z-index: -1に変更します。すると青のdivタグは表示されません。chromeのコンソールで確認すると、クラス名contentsのdivタグの後ろに隠れているのがわかります。

これはbodyタグを1つの大きなスタックコンテキストとして、以下の順番の重なりになっているのが原因です。contentsのdivタグとdiv-parentのdivタグの、初期値のz-index: auto;はz-index: 0;と同じ深度です。

青(z-index: -1;)→contents(z-index: auto;)→div-parent(z-index: auto;)→緑(z-index: 2;)→オレンジ(z-index: 3;)

次に、親要素の白背景(div-parent)にposition: relative、z-index: 0;を指定します。div-parentがスタックコンテキストになったため、子要素のdiv-childのdivタグはz-indexの値が何であってもスタックコンテキストの外に出ることはありません。結果、青のdivタグが表示されます。重なりは以下の順番になります。

contents(z-index: auto;)→div-parent(z-index: 0;)→青(z-index: -1;)→緑(z-index: 2;)→オレンジ(z-index: 3;)

このように、z-index: -1を指定して要素が表示されなくなった場合、親要素をスタックコンテキストにすることで解決する場合があります。

関連記事

2022.07.17

HTML・CSS

Google Fontsの読み込みをDNSプリフェッチで最適化

DNSプリフェッチを利用すると、外部ドメイン名(ホスト名)の名前解決(DNSルックアップ)を事前に強制できます。 WEBページ表示時ブラウザが外部ドメインにアク…

2025.08.08

HTML・CSS

fit-contentのセンタリングを利用した横幅可変のグラデーション背景

width: fit-contentを利用してテキストをセンタリングし、グラデーションの背景を表示します。デモページはこちら 以下のhtml構造で確認します。d…

2022.05.11

HTML・CSS

CSSのcalc記述時の注意点

CSSのcalcはCSS3で追加された関数です。calc記述時は以下の点に注意が必要です。 加算・減算の演算子の左右には半角スペースが必要 乗算は掛けられる方(…

2025.05.08

HTML・CSS

text-decorationを利用した文字の下線

text-decorationプロパティを利用して複数行の文字に下線を引きます。複数行に対応させるため、inline要素に適用します。デモページはこちら 以下の…

2020.10.15

HTML・CSS

CSS疑似要素のcontentプロパティにjQueryで設定したカスタムデータ属性の値を指定

デモページはこちら CSS疑似要素のcontentプロパティにjQueryで設定したカスタムデータ属性の値を指定します。以下のhtml構造でテストします。デモペ…

上に戻る