divで設定した要素に、背景としてストライプの要素を下に重ねたく
擬似クラス::afterを使ってコーディングしたところ、
z-indexの順番が効かず、親要素(.item)の上に重なってしまいます。
理想の重なり順は
上 <div class="item">
中 擬似要素
下 <div class="bg">
なのですが、どなたか解決方法ご存知でしたら、教えていただきたいです。
該当のソースコード
HTML
1<div class="bg"> 2 <div class="item"> 3 <p>テキスト</p> 4 <a href="#">クリック</a> 5 </div> 6</div>
scss
1.bg { 2 height: 500px; 3 background: #FFFAF0; 4} 5 6.item { 7 position: relative; 8 width: 300px; 9 height: 200px; 10 border: 1px solid #333; 11 border-radius: 10px; 12 z-index: 100; 13 background-color: #fff; 14 &::after { 15 content: ""; 16 position: absolute; 17 top: 0; 18 right: 0; 19 left: 0; 20 bottom: 0; 21 z-index: 0; 22 background-size: auto auto; 23 background-color: rgba(255, 255, 255, 1); 24 background-image: repeating-linear-gradient(-45deg, transparent, transparent 8px, rgba(103, 207, 240, 1) 8px, rgba(103, 207, 240, 1) 16px ); 25 -webkit-transform: translate(10px,10px); 26 transform: translate(10px,10px); 27 border-radius: 20px; 28 pointer-events : none; 29 } 30}
試したこと
.itemのz-indexを削除し、
::after要素のz-indexを-1にしたところ、重なりのエラーは解消されましたが
親要素(.bg)の背景の下になってしまうため、見えません。
これは、親要素に position:relative, z-index:-2 を指定することで見栄えは解消しましたが
次は要素内に入れたリンクボタンがクリックできなくなります。
.itemに直接背景を入れては?というご指摘がありましたが、
.itemと.bgは異なる背景にしたいためこのような記述としています。
「親要素の背景の下になってしまうため、見えません。」とのことですが、この「親要素」とは.itemのことですか?
こんにちは。
.item に背景を付けるのではなく、疑似要素にしたい理由を伺っても良いですか?
単純にこれではダメなのでしょうか・・・
.item {
width: 300px;
height: 200px;
background-color: rgba(255, 255, 255, 1);
background-image: repeating-linear-gradient(-45deg, transparent, transparent 8px, rgba(103, 207, 240, 1) 8px, rgba(103, 207, 240, 1) 16px );
-webkit-transform: translate(10px,10px);
transform: translate(10px,10px);
border-radius: 20px;
}
すみません、一旦書いたのですが、リンクのクリックが出来るかどうかは試してないのでわからないため、内容を取り消しとさせて頂きましたのでこの書き込みは無視してください。すみません。
@Lhankor_Mhy様
>この「親要素」とは.itemのことですか?
こちらは.bgのことになります。わかりづらく、申し訳ございません。修正いたします。
@mai1210様
.bgの背景と.itemの背景は違うものにしたいのです(cssに記述漏れていたので追加いたします。)
また、ご指摘いただいた記述では擬似要素が.itemの上にきてしまうようです。
> こちらは.bgのことになります。
では、「::after要素のz-indexを-1にしたところ、重なりのエラーは解消されましたが親要素(.bg)の背景の下になってしまうため、見えません。」という問題が再現しませんでした。
https://jsfiddle.net/Lhankor_Mhy/z9xaujpk/
おそらく、ご提示いただいていない部分に原因があると思われます。
問題が再現するコードをご提示ください。
backgroud-color: #fff;
がタイポという落ちではないのかな?
background-color: #fff;
↑それを修正しても問題が再現しないのですが、問題が共有される前に自己解決したようなので、なんだかよくわからないけどめでたしめでたし。
ちょっとズレた影(?)みたいに入れたかったんですね。やりたい事が今やっとわかりました。
何にせよ解決したようなので良かったです。
回答2件
あなたの回答
tips
プレビュー