iT邦幫忙

0

z-index 父層與子層問題

  • 分享至 

  • xImage

HTML

    <div class="container">
      <div class="box1">
      </div>
      <button>parent-button</button>
    </div>

CSS

      .container {
        width: 400px;
        height: 400px;
        background-color: burlywood;
        position: relative;
        z-index:0;
      }
      .box1 {
        width: 400px;
        height: 400px;
        position: absolute;
        top: 0;
        z-index:-1;
        background-color: rgba(0, 0, 0,0.5);
      }
.container button:hover{
    background-color:red;
}

副上code pen 問題一的效果
https://codepen.io/byssjbij-the-encoder/pen/ZERPNpN
實際上我是想利用子層設置background-color:RGBA 達到遮罩的效果
只是我不清楚為什麼是這樣設
問題1想問為什麼z-index這樣有遮罩效果且button有效果(可以按或添加hover)


.container{
z-index:0
}
.box1{ 
z-index:-1 
}

**問題2.**設成這樣"有遮罩效果"但是button卻被遮照蓋住了完全不能使用button

.container{
z-index:1
}
.box1{ 
z-index:2 
}

**問題3.**為什麼將CSS設成底下這樣button有出現在"遮罩之上"
但是卻失效了(沒辦法按或hover)?

.container{
z-index:-1;
}

.box1{
z-index:-1;
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
揮揮手
iT邦研究生 5 級 ‧ 2022-12-09 17:18:06
最佳解答

z-index 要了解圖層的概念
還要注意 父子層
這個頁面範例還滿多的
https://kumo.tw/article.php?id=44

問題一 : 其實你的box 沒有蓋過 container 因為他是父層 而且設定了z-index
父層添加 z-index 子層的z-index 負數會直接失效
問題二 : 你成功用box1遮蔽的button 這樣
問題三 :container 直接沉於頁面之下 button 沒有position 跟著沉

我的寫法
父層不定z-index
子層 button 跟box1 來設定z-index 來處理

openAI 可怕的回答

設定元素的 z-index 值可以決定元素在頁面上的顯示順序。如果兩個元素的 z-index 值不同,那麼具有較大 z-index 值的元素會顯示在具有較小 z-index 值的元素的上面。

如果父元素的 z-index 值比子元素的 z-index 值要大,那麼即使子元素的 z-index 值是負數,它也會被父元素的 z-index 值所覆蓋。這就是為什麼在父元素样式里加上 z-index 值時,子元素的 z-index 的负数值會失效,状态變為可見的原因。

如果您想要讓子元素的 z-index 的负数值生效,您可以將父元素的 z-index 值設為較小的值,例如 0 或負數。這樣子元素的 z-index 值就能夠覆蓋父元素的 z-index 值,並顯示在父元素的下面。

看更多先前的回應...收起先前的回應...

感謝回覆,你的處理辦法很值觀謝謝。
問題一所以當父層設定了z-index: 不管子層設定什麼都會失效。
問題三所以已圖層的概念來看的話會是
container => box =>button 這樣子嗎?
比較好奇的是為什麼button顯示出來了但還是失效了

揮揮手 iT邦研究生 5 級 ‧ 2022-12-12 09:29:15 檢舉
揮揮手 iT邦研究生 5 級 ‧ 2022-12-12 11:20:19 檢舉

失效是因為zindx 都 < 0
問題是 為什麼box1 沒 蓋住button
我也在看原因XDD

揮揮手 iT邦研究生 5 級 ‧ 2022-12-12 13:36:42 檢舉

結論
基本照html 架構走
同層有設定 position absolute 或著 relative
才看z-index

揮揮手 iT邦研究生 5 級 ‧ 2022-12-13 10:20:32 檢舉

回到第三題
因為button 是position static 所以未啟用圖層 為 0
box1 position:absolute 開啟圖層 為z-index:-1 至於button 下方
container z-index:-1 讓整個父層 沉於頁面( < 0)之下 按鈕失效

我要發表回答

立即登入回答