解決CSS中子元素z-index與父元素兄弟節(jié)點(diǎn)的層級(jí)問(wèn)題

1.問(wèn)題的出現(xiàn)
寫(xiě)了一個(gè)平鋪的列表,其中有些列表項(xiàng)具有hover出現(xiàn)的彈出框。希望達(dá)成的目標(biāo)是彈出框展現(xiàn)時(shí),要把列表項(xiàng)內(nèi)容遮蓋住,以保證彈出框內(nèi)容優(yōu)先展示。
元素的結(jié)構(gòu)大致如下:
<div class="list"> <div class="unit"> <div class="content">列表項(xiàng)1</div> <div class="hover">彈出框1</div> </div> <div class="unit"> <div class="content">列表項(xiàng)2</div> </div> <div class="unit"> <div class="content">列表項(xiàng)3</div> <div class="hover">彈出框3</div> </div> </div>
部分樣式如下:
.unit{ position: relative; z-index: 1; } .hover{ position: absolute; z-index: 10; }
實(shí)際效果如下:
列表項(xiàng)1的彈出框雖然可以遮蓋住自身的內(nèi)容,卻無(wú)法遮蓋住列表項(xiàng)2的內(nèi)容。
2.原理
看起來(lái),彈出框的z-index值是大于列表項(xiàng)父元素的z-index值(包括兄弟元素的),所以應(yīng)該會(huì)把所有列表項(xiàng)的內(nèi)容都遮蓋住才對(duì)。
但是,實(shí)際上,這里我忽略了一個(gè)最基本的點(diǎn)。因?yàn)閺棾隹蚴橇斜眄?xiàng)的子元素,所以其z-index值的大小,僅僅跟彈出框的兄弟元素對(duì)比才有意義。而對(duì)于與父元素(列表項(xiàng))內(nèi)容的層級(jí),應(yīng)該看父元素的層級(jí)關(guān)系。
我們可以想象為,每一個(gè)列表項(xiàng),是一個(gè)平行世界,一個(gè)平行世界內(nèi)部設(shè)置的z-index,只有跟這個(gè)世界內(nèi)部的其它內(nèi)容比較起來(lái)才有意義,你要跟別的平行世界去比較,那對(duì)不起,這玩意有次元壓制。如果另一個(gè)平行世界的層級(jí)比你這個(gè)世界高,你自己的z-index設(shè)置的再高,那也是內(nèi)部稱(chēng)霸王,再高也不會(huì)超過(guò)另一個(gè)世界的地板高。
在上邊的示例中,雖然所有的列表項(xiàng)z-index都設(shè)置為了1,但是根據(jù)出現(xiàn)順序,由于第二個(gè)列表項(xiàng)的層級(jí)關(guān)系會(huì)比第一個(gè)高,因此,列表項(xiàng)1的所有內(nèi)容都會(huì)被列表項(xiàng)2遮蓋。
3.解決方案
目前能想到的解決方案就是將彈出框和列表項(xiàng)設(shè)為平級(jí)(變?yōu)樾值茉兀?,讓彈出框的z-index值大于列表項(xiàng)的z-index,另外js手動(dòng)設(shè)置每一個(gè)彈出框的定位。
到此這篇關(guān)于解決CSS中子元素z-index與父元素兄弟節(jié)點(diǎn)的層級(jí)問(wèn)題的文章就介紹到這了,更多相關(guān)css z-index層級(jí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)2020-03-23
CSS3關(guān)于z-index不生效問(wèn)題的解決
這篇文章主要介紹了CSS3關(guān)于z-index不生效問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)2020-02-19z-index為負(fù)值的元素?zé)o法點(diǎn)擊到的解決方法
這篇文章主要介紹了z-index為負(fù)值的元素?zé)o法點(diǎn)擊到的解決方法,需要的朋友可以參考下2016-10-27CSS z-index 層級(jí)關(guān)系優(yōu)先級(jí)的概念
這篇文章主要介紹CSS z-index 層級(jí)關(guān)系優(yōu)先級(jí)的概念,講解的比較詳細(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ū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-11