問題
解決策
親を含めた先祖要素へのz-indexの値の依存
まず、下記をご覧ください。
先頭に配置したいテキスト
本来は、「先頭に配置したいテキスト」を一番上に配置したいのですが、濃いオレンジ色の丸いブロックが先頭に来てしまっています。
HTMLはこちらです。
<div class="posi-box section-ss">
<div class="posi01">
<p class="text">先頭に配置したいテキスト</p>
</div>
<div class="posi02"></div>
</div>
CSSはこちらです。
.posi-box{
height: 300px;
padding: 10px;
position: relative;
border: 1px solid #40180A;
}
.posi-box .posi01{
width: 200px;
height: 200px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
background-color: #FCECE8;
z-index: 0;
}
.posi-box .posi01 .text{
width: 100%;
height: 100px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
font-weight: bold;
z-index: 2;
}
.posi-box .posi02{
width: 150px;
height: 150px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
background-color: rgba(241,90,36,0.5);
border-radius: 50%;
z-index: 1;
}
この現象の要因
親要素であるクラス「posi01」に「z-index: 0;」が設定されており、そちらが優先されてしまっているため。
先頭に配置したかったクラス「text」に設定された「z-index: 2;」は、親要素であるクラス「posi01」の「z-index: 0;」が優先されてしまうため、濃いオレンジ色の丸いブロックであるクラス「posi02」の「z-index: 1;」の後ろに回り込んでしまいました。
該当箇所
.posi-box .posi01{
...
z-index: 0;
}
.posi-box .posi01 .text{
...
z-index: 2;
}
.posi-box .posi02{
...
z-index: 1;
}
ここに注意!
親または先祖要素にz-indexを設定していると、子要素でいくらz-indexを設定しても、親・先祖要素のz-indexの設定が優先されてしまいます。
なので、HTMLを見直すか、CSSを工夫して、兄弟要素にz-indexを設定して同じ体裁となるように調整する必要がありますので、十分お気を付けください。
コメント