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を指定すると子要素の重なりに影響を及ぼす場合があるため、指定には注意が必要です。

関連記事

2024.08.19

HTML・CSS

縦書き文字の配置について

縦書きの文字を写真の左上・左中・左下・右上・右中・右下に配置します。デモページはこちら 以下のhtml構造で確認します。 CSSはpositionとtransf…

2021.09.12

HTML・CSS

90°回転させた要素をブロック要素内に収めるtransform-originの設定

左上に配置した長方形の要素を90°回転させた時に、親のブロック要素内に収めるtransform-originの設定です。デモページはこちら htmlは以下のよう…

2021.02.02

HTML・CSS

flex-growプロパティを利用した横並びのリスト

flex-growプロパティを利用して、左右にボーダーのある横並びのリストを作ります。リスト内のテキストの文字数が異なる場合でも、簡単にレスポンシブ対応できます…

2020.11.04

HTML・CSS

inline要素のマージン

デモページはこちら inline要素にCSSでマージンを設定した場合の挙動です。以下のhtml構造のspanタグでテストします。 inline要素に左右のマージ…

2024.09.08

HTML・CSS

clip-pathプロパティを利用した高さ可変の三角形と矢印

clip-pathプロパティを利用して、高さを可変の三角形と矢印を作成します。デモページはこちら まず共通のCSSです。clip-pathはdivタグの疑似要素…

上に戻る