やりたいこと
.sectionの背景を設定して.section__itemにグラデーションの影.shadowを設定したい。
なにも設定しないと.shadowが一番上に来てしまう。
.section__itemにbox-shadowをつければ出来るかと思ったがグラデーションの仕方が分からなかったので断念。
shadowにz-index:-1をつけてみたが.sectionの背景の下に来てしまうのでうまくいかない。
そこでchatGPT先生にやり方を聞いて解決しましたので備忘のため残します。
<section class="section">
<div class="section__item">
<div class="shadow"></div>
<div class="section-item__picture">
<p class="section-item__title"></p>
<p class="section-item__name"></p>
</div>
<div class="section-item__discription">
<p class="section-item-discription__text"></p>
</div>
</div>
</section>
解決方法
.section__item {
position: relative;
z-index: 1;
}
.shadow {
position: absolute;
bottom: -10px;
right: -15px;
z-index: -1; /* 重なり順を下にする */
}
.section {
background-image: url("your-background-image.jpg");
position: relative;
z-index: 0;
}
まず、.section__item
要素にposition: relative;
とz-index: 1;
を設定することで、この要素が重なっている他の要素の基準位置となり、その上に重なっている要素のz-index
値を比較することができるようになります。
次に、.shadow
要素にposition: absolute;
、bottom: -10px;
、right: -15px;
、z-index: -1;
を設定することで、親要素である.section__item
要素の下に表示され、かつ、z-index
値が負の数であるため、他の要素よりも下に表示されるようになります。
そして、.section
要素にposition: relative;
、z-index: 0;
を設定することで、.shadow
要素が.section
要素の背景画像よりも上に表示されるようになります。.section
要素はsection全体を表す要素であり、通常、最も下の要素であるため、z-index
値を0に設定することで、.shadow
要素のz-index
値が大きくなり、背景画像よりも上に表示されるようになります。
以上の設定により、.shadow
要素が.section-item__picture
とsection-item__discription
の要素の下に表示され、かつ、背景画像よりも上に表示されるようになります。
CSSでは、親子関係や兄弟関係など、要素同士の関係性をうまく利用することで、重なり順を調整することができます。また、position
プロパティとz-index
プロパティを組み合わせることで、要素の重なり順を調整することができます。
(以上chatGPT先生のお言葉でした)
コメント