ネストされたCSS要素が2つあります。親を子要素の最上部、つまりz軸の上に配置する必要があります。 z-indexを設定するだけでは不十分です。
子に負のz-indexを設定することはできません。実際のページのページコンテナーの下に設定します。これが唯一の方法ですか?
.parent {
position: relative;
width: 750px;
height: 7150px;
background: red;
border: solid 1px #000;
z-index: 1;
}
.child {
position: absolute;
background-color: blue;
z-index: 0;
color: white;
top: 0;
}
.wrapper
{
position: relative;
background: green;
z-index: 10;
}
<div class="wrapper">
<div class="parent">
parent parent
<div class="child">
child child child
</div>
</div>
</div>
子に負のz-index
を設定し、親に設定されているものを削除します。
.parent {
position: relative;
width: 350px;
height: 150px;
background: red;
border: solid 1px #000;
}
.parent2 {
position: relative;
width: 350px;
height: 40px;
background: red;
border: solid 1px #000;
}
.child {
position: relative;
background-color: blue;
height: 200px;
}
.wrapper {
position: relative;
background: green;
height: 350px;
}
<div class="wrapper">
<div class="parent">parent 1 parent 1
<div class="child">child child child</div>
</div>
<div class="parent2">parent 2 parent 2
</div>
</div>
幸いなことに解決策があります。親のラッパーを追加し、このラッパーのz-indexをたとえば10に変更し、子のz-indexを-1に設定する必要があります。
.parent {
position: relative;
width: 750px;
height: 7150px;
background: red;
border: solid 1px #000;
z-index: initial;
}
.child {
position: relative;
background-color: blue;
z-index: -1;
color: white;
}
.wrapper {
position: relative;
background: green;
z-index: 10;
}
<div class="wrapper">
<div class="parent">parent parent
<div class="child">child child child</div>
</div>
</div>
これらの回答の一部は機能しますが、position: absolute;
およびz-index: 10;
は、必要な効果を達成するためだけにかなり強いように見えました。必要なものは次のとおりであることがわかりましたが、残念ながらこれ以上減らすことはできませんでした。
HTML:
<div class="wrapper">
<div class="parent">
<div class="child">
...
</div>
</div>
</div>
CSS:
.wrapper {
position: relative;
z-index: 0;
}
.child {
position: relative;
z-index: -1;
}
この手法を使用して、画像リンクの境界線付きホバー効果を実現しました。ここにはもう少しコードがありますが、上記の概念を使用して画像の上部に境界線を表示します。
割れた。基本的に、何が起こっているのかというと、z-indexを負に設定すると、親要素が配置されているかどうかにかかわらず、実際には親要素を無視し、次の配置された要素(この場合はメインコンテナ)の後ろに座ります。したがって、親要素を別の配置されたdivに配置する必要があり、子divはその背後に配置されます。
私のコードが機能するためには、親要素を明確に配置することができなかったため、それを解決することは私にとって命の恩人でした。
ここで説明されている効果を達成するには、これらすべてが非常に有用であることがわかりました: CSSのみを使用して、<a> の上にカーソルを置いてdivを表示します
Divはposition:absolute
、位置に関する限り、実際にはネストされていません。 jsbinページで、HTMLのdivの順序を次のように切り替えました。
<div class="child"><div class="parent"></div></div>
そして、赤いボックスが青いボックスを覆っています。これがあなたが探しているものだと思います。
position:relative
を使用するには、親と子の両方でposition:absolute
またはz-index
を使用する必要があります。