我們都是z-index: auto,但是我們不一樣

學習Blog
Code學習紀錄
Published in
Nov 3, 2022

工作製作前端畫面時,遇到一個很有趣的現象,公司自製的下拉選單居然被下層的元素遮擋住了

想說好吧給A加個z-index,嗯??沒有效果?為什麼?腦中突然想到z-index預設值到底是什麼?

是Auto? 那如果三個z-index: auto的div究竟會怎麼排列呢?

// html
<div class="card card">
<div class="item1 item">item1</div>
<div class="item2 item">item2</div>
<div class="item3 item">item3</div>
</div>
// css
.card {
position: relative;
}
.item1 {
background-color: pink;
}
.item2 {
background-color: cyan;
left: 100px;
}
.item3 {
background-color: green;
left: 200px;
}

實際上越後面的element權重會越大,所以這解釋了上面為什麼下拉選單被遮住,但為什麼設定z-index沒有用? 查了一下資料發現一個很關鍵的內容

To set position for an element, add the CSS position property to anything other than static, like relative or absolute.

除了z-index外,position也是要對應設定的,

// html
<div class="card card1">
<Selector></Selector>
<div class="name">A</div>
</div>
<div class="card card2">
<Selector></Selector>
<div class="name">B</div>
</div>
// css
.card1 {
position: relative;
z-index: 1;
}
.card2 {
position: relative;
z-index: 0;
}

試了一下,果然解決了!不過後來B面的選單往上移動,那又是另一個故事了…

--

--