2023.02.18

HTML・CSS

異なる親要素を持つ子要素の重なり

異なる親要素を持つ子要素の重なりを、positionプロパティとz-indexプロパティを指定して確認します。
デモページはこちら

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

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

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

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

青のみposition: relative、z-index: 10を指定すると、青が一番上に重なります。次に、紫にposition: relative、z-index: 20を指定すると、青のさらに上に紫が重なります。

問題は次です。今までは子要素のみへの指定でしたが、ここで紫の親要素である緑にposition: relative、、z-index: 5を指定します。

すると、z-index: 20の紫の上にz-index: 10の青が重なります。これは緑にz-indexを指定したことで紫は親要素の緑に内包され、z-index: 10の青とz-index: 5の緑の比較になっているのが原因です。これで紫にどんなに大きなz-indexを指定しても青より上になることはありません。

このように、親要素にz-indexを指定すると子要素の重なりに影響を及ぼす場合があるため、指定には注意が必要です。

関連記事

2020.10.14

HTML・CSS

CSSのtransformプロパティによるsvgの反転

デモページはこちら CSSのtransformプロパティでsvgを反転します。以下のsvgをオリジナルとし、複製してidを付与してCSSを適用します。svg以外…

2020.08.19

HTML・CSS

iOS Safariのツールバーと表示エリアの挙動

iOS Safariで表示される画面下部のツールバーは、下にスクロールすると非表示になります。正確には上部のアドレスバーが小さくなり、下部のツールバーが消えます…

2025.08.08

HTML・CSS

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

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

2024.09.05

HTML・CSS

radial-gradientで作る水玉模様

background-imageプロパティのradial-gradientで水玉模様を作成します。わかりやすいように背景を繰り返し前と繰り返し後で比較します。デ…

2022.07.15

HTML・CSS

擬似要素::before、::afterと:hoverの組み合わせ

CSSの擬似要素::before、::afterに:hoverでホバーエフェクトを適用する場合、以下のように:hoverを先、::before、::afterを…

上に戻る