css中z-index: 0和z-index: auto的區(qū)別

最近在學(xué)習(xí)層疊上下文,學(xué)習(xí)的過程中對z-index為0和為auto有什么區(qū)別產(chǎn)生了疑問,于是去百度查了一下資料。發(fā)現(xiàn)了一些問題,結(jié)合自己的實(shí)踐(實(shí)驗(yàn)?)整理出了這篇筆記。
勘誤
查資料時(shí)發(fā)現(xiàn)有一種說法是z-index為0是會創(chuàng)建新的層疊上下文,0會在auto上面。后半句話是錯(cuò)誤的,z-index: 0與z-index不設(shè)置,也就是z-index: auto在同一層級內(nèi)沒有高低之分,文檔流中后出現(xiàn)的會覆蓋先出現(xiàn)的。
設(shè)置z-index: 0或z-index: auto,文檔流中后出現(xiàn)的會覆蓋先出現(xiàn)的。
來做一些小實(shí)驗(yàn)
<!DOCTYPE html> <html> <head> <title>z-index為0或auto</title> <style> .red, .blue{ width: 200px; height: 200px; } .red { position: absolute; z-index: 0; top: 100px; left: 100px; background: #FF0000; } .blue { position: absolute; z-index: auto; top: 40px; left: 40px; background: #0000FF; } </style> </head> <body> <div class="red"> index-0 </div> <div class="blue">index-auto</div> </body> </html>
這段代碼的結(jié)果是:
可以看到藍(lán)色元素覆蓋在了紅色元素上方,交換紅藍(lán)元素塊在文檔中的順序?yàn)?/p>
<div class="blue">index-auto</div> <div class="red"> index-0 </div>
可以得到
這時(shí)紅色元素又覆蓋在藍(lán)色元素之上??梢缘贸鰖-index取值0或auto對元素在層疊上下文中的排列順序并沒有影響。
除次之外,我還在MDN文檔中看到了這樣一句話:
當(dāng)沒有指定z-index的時(shí)候, 所有元素都在會被渲染在默認(rèn)層(0層)。
也就是auto和0是同一層。
再來給上面的代碼在藍(lán)色塊后面新增一個(gè)綠色的塊。
<div class="green">不設(shè)置z-index</div> .green { position: absolute; top: 160px; left: 160px; background: greenyellow; }
這時(shí)頁面長這樣。
綠色沒有設(shè)置z-index值。一般瀏覽器position不為static,且不設(shè)置z-index時(shí),z-index為auto,IE6/7下z-index為0。
綠色作為最后出現(xiàn)的元素,覆蓋了藍(lán)色和紅色兩個(gè)元素。
z-index: 0創(chuàng)建了層疊上下文
現(xiàn)在我們來驗(yàn)證紅色元素因?yàn)閦-index:0產(chǎn)生了層疊上下文。在紅色元素里添加測試元素
<div class="test"></div> .test { width: 140px; height: 140px; position: absolute; right: 0px; top: 0px; background: grey; z-index: 10; }
這時(shí)候頁面長這樣
灰色測試塊被藍(lán)色和綠色塊所覆蓋。
顯然易見,即使test元素的z-index為10,也無法展示在層疊上下文的最上層。因?yàn)閠est隸屬于它的父元素red創(chuàng)建的層疊上下文。當(dāng)一個(gè)元素產(chǎn)生了層疊上下文,其子級層疊上下文的z-index值只在父級中才有意義。所有灰色塊的z-index只在紅色塊里生效。
z-index: auto不創(chuàng)建層疊上下文
那么現(xiàn)在將這個(gè)測試元素放在藍(lán)色塊里試一試呢?(藍(lán)色元素的z-index值為auto)
可看到灰色元素展示在所有元素的最上層,z-index值生效了!這個(gè)時(shí)候test元素隸屬于根元素創(chuàng)建的層疊上下文(在層疊上下文的層次結(jié)構(gòu)中,沒有創(chuàng)建層疊上下文的元素同其父級處于一個(gè)層疊上下文。藍(lán)色塊沒有創(chuàng)建層疊上下文,與其父元素也就是根元素是同一個(gè)層疊上下文)。紅色元素也屬于根元素創(chuàng)建的層疊上下文,但是紅色元素z-index為0,0小于10,因此灰色塊在上。
總結(jié)
- 不設(shè)置z-index值時(shí),默認(rèn)是auto。默認(rèn)層也就是0層。
- z-index: 0 與沒有定義 z-index 也就是z-index: auto在同一層級內(nèi)沒有高低之分,文檔流中后出現(xiàn)的會覆蓋先出現(xiàn)的。
- z-index: 0 會創(chuàng)建層疊上下文z-index: auto不會創(chuàng)建層疊上下文。
到此這篇關(guān)于css中z-index: 0和z-index: auto的區(qū)別 的文章就介紹到這了,更多相關(guān)z-index: 0和z-index: auto 區(qū)別 內(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與父元素兄弟節(jié)點(diǎn)的層級問題
這篇文章主要介紹了解決CSS中子元素z-index與父元素兄弟節(jié)點(diǎn)的層級問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可2020-06-17- 這篇文章主要介紹了css 層疊與z-index的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)2020-03-23
- 這篇文章主要介紹了CSS3關(guān)于z-index不生效問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)2020-02-19
z-index為負(fù)值的元素?zé)o法點(diǎn)擊到的解決方法
這篇文章主要介紹了z-index為負(fù)值的元素?zé)o法點(diǎn)擊到的解決方法,需要的朋友可以參考下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