解決CSS中子元素z-index與父元素兄弟節(jié)點的層級問題
1.問題的出現(xiàn)
寫了一個平鋪的列表,其中有些列表項具有hover出現(xiàn)的彈出框。希望達(dá)成的目標(biāo)是彈出框展現(xiàn)時,要把列表項內(nèi)容遮蓋住,以保證彈出框內(nèi)容優(yōu)先展示。
元素的結(jié)構(gòu)大致如下:
<div class="list">
<div class="unit">
<div class="content">列表項1</div>
<div class="hover">彈出框1</div>
</div>
<div class="unit">
<div class="content">列表項2</div>
</div>
<div class="unit">
<div class="content">列表項3</div>
<div class="hover">彈出框3</div>
</div>
</div>
部分樣式如下:
.unit{
position: relative;
z-index: 1;
}
.hover{
position: absolute;
z-index: 10;
}
實際效果如下:

列表項1的彈出框雖然可以遮蓋住自身的內(nèi)容,卻無法遮蓋住列表項2的內(nèi)容。
2.原理
看起來,彈出框的z-index值是大于列表項父元素的z-index值(包括兄弟元素的),所以應(yīng)該會把所有列表項的內(nèi)容都遮蓋住才對。
但是,實際上,這里我忽略了一個最基本的點。因為彈出框是列表項的子元素,所以其z-index值的大小,僅僅跟彈出框的兄弟元素對比才有意義。而對于與父元素(列表項)內(nèi)容的層級,應(yīng)該看父元素的層級關(guān)系。
我們可以想象為,每一個列表項,是一個平行世界,一個平行世界內(nèi)部設(shè)置的z-index,只有跟這個世界內(nèi)部的其它內(nèi)容比較起來才有意義,你要跟別的平行世界去比較,那對不起,這玩意有次元壓制。如果另一個平行世界的層級比你這個世界高,你自己的z-index設(shè)置的再高,那也是內(nèi)部稱霸王,再高也不會超過另一個世界的地板高。
在上邊的示例中,雖然所有的列表項z-index都設(shè)置為了1,但是根據(jù)出現(xiàn)順序,由于第二個列表項的層級關(guān)系會比第一個高,因此,列表項1的所有內(nèi)容都會被列表項2遮蓋。
3.解決方案
目前能想到的解決方案就是將彈出框和列表項設(shè)為平級(變?yōu)樾值茉兀?,讓彈出框的z-index值大于列表項的z-index,另外js手動設(shè)置每一個彈出框的定位。
到此這篇關(guān)于解決CSS中子元素z-index與父元素兄弟節(jié)點的層級問題的文章就介紹到這了,更多相關(guān)css z-index層級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
css之Display、Visibility、Opacity、rgba和z-index: -1的區(qū)別
這篇文章主要介紹了css之Display、Visibility 和 Opacity 的區(qū)別,方便我們后期根據(jù)需要選擇,需要的朋友可以參考下2020-11-07
這篇文章主要介紹了css 層疊與z-index的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)2020-03-23
這篇文章主要介紹了CSS3關(guān)于z-index不生效問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)2020-02-19z-index為負(fù)值的元素?zé)o法點擊到的解決方法
這篇文章主要介紹了z-index為負(fù)值的元素?zé)o法點擊到的解決方法,需要的朋友可以參考下2016-10-27CSS z-index 層級關(guān)系優(yōu)先級的概念
這篇文章主要介紹CSS z-index 層級關(guān)系優(yōu)先級的概念,講解的比較詳細(xì),需要的朋友可以參考下。2016-06-06- 這篇文章主要介紹了css z-index層重疊順序使用介紹,需要的朋友可以參考下2014-11-04

css中z-index: 0和z-index: auto的區(qū)別
本文主要介紹了css中z-index: 0和z-index: auto的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-11



