這篇文章主要講解了“web前端中CSS層疊上下文的方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“web前端中CSS層疊上下文的方法是什么”吧!
創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,先為寧化等服務(wù)建站,寧化等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為寧化企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
一、現(xiàn)象
// 穿透父級(jí)容器的 z-indexweb前端開發(fā)學(xué)習(xí)Q-q-u-n: 731771211,分享學(xué)習(xí)的方法和需要注意的小細(xì)節(jié),不停更新最新的教程和學(xué)習(xí)方法(詳細(xì)的前端項(xiàng)目實(shí)戰(zhàn)教學(xué)視頻,PDF)
// 不能穿透父級(jí)容器的 z-index
兩段代碼基本一樣,只有在深藍(lán)色盒子處有個(gè) z-index
不同。當(dāng)父級(jí)容器的 z-index
為 auto
的時(shí)候,紅色盒子穿過了父級(jí)容器出現(xiàn)在了父級(jí)容器的背后(被父級(jí)容器遮擋住)。當(dāng)父級(jí)容器的 z-index
為 0
的時(shí)候,紅色盒子無法穿過父級(jí)容器。
// 元素 Z 軸對(duì)比
// 元素 Z 軸對(duì)比web前端開發(fā)學(xué)習(xí)Q-q-u-n: 731771211,分享學(xué)習(xí)的方法和需要注意的小細(xì)節(jié),不停更新最新的教程和學(xué)習(xí)方法(詳細(xì)的前端項(xiàng)目實(shí)戰(zhàn)教學(xué)視頻,PDF)
同樣的,以上兩段代碼基本一樣,都是有 3 層的 DIV 盒子。最外層是一個(gè)深藍(lán)色盒子,中間一層容器盒子,最下面一層紅色及灰色盒子。不同之處在于中間這層容器盒子的 z-index
由 auto
變成了 0
。最底下的紅色及灰色盒子的 Z 軸層級(jí)比較的結(jié)果就截然不同。**由以上兩個(gè)例子我們可以發(fā)現(xiàn),當(dāng) ****z-index 為數(shù)值并且生效的時(shí)候,容器會(huì)發(fā)生一種變化,會(huì)使得容器內(nèi)的子組件無法穿過容器本身,并且子組件的層級(jí)由父組件決定。
這種變化后的容器元素我們稱之為層疊上下文。
二、特性
層疊上下文有幾個(gè)特性層疊上下文可以嵌套,內(nèi)部層疊上下文及其所有子元素均受制于外部的層疊上下文。
這個(gè)好理解,可以參考例子 2 。當(dāng)?shù)诙拥娜萜骱凶由?jí)為層疊上下文時(shí),紅色盒子及灰色盒子的 Z 軸層級(jí)受制于第二層的容器盒子。
每個(gè)層疊上下文和兄弟元素獨(dú)立,也就是當(dāng)進(jìn)行層疊變化或渲染的時(shí)候,只需要考慮后代元素。
這一條在性能優(yōu)化上可以用的上。在更新 DOM 元素的時(shí)候考慮上層疊上下文可以使得站點(diǎn)性能表現(xiàn)更加優(yōu)異。
層疊上下文未指定 z-index
時(shí),其層疊等級(jí)與 z-index``: 0
相同, 要比普通元素高。指定 z-index
時(shí)按照層疊規(guī)則來。
這條專門指的由 CSS3 屬性創(chuàng)建出來的層疊上下文,其本身未指定 z-index。其層疊等級(jí)應(yīng)該是 z-index: 0。
層疊上下文大體上可分為三種創(chuàng)建方式1. 頁面根元素,稱為根層疊上下文 2. z-index
值為數(shù)值的定位元素的傳統(tǒng)層疊上下文3. 其他 CSS3 屬性(詳情可動(dòng)手實(shí)驗(yàn)了解)
z-index
值不為auto
的flex
項(xiàng)(父元素display:flex | inline-flex
)
元素的 opacity
值不是 1
元素的 transform
值不是 none
元素的 filter
值不是 none
注意:1、z-index: auto 和 z-index: 0 在層疊等級(jí)上屬于同一級(jí)。但是 z-index: 0 就是符合這一條“z-index 為數(shù)值”會(huì)使得元素升級(jí)為層疊上下文。2、 IE6,7 有個(gè)不合常理的地方,就是當(dāng)元素的 z-index 為 auto 的時(shí)候,該元素也升級(jí)為創(chuàng)建層疊上下文。這就是為什么在過去 IE6/IE7 的 z-index 一直是個(gè)老大難的原因。
四、兩個(gè)概念:層疊順序、層疊等級(jí)
在說層疊規(guī)則之前兩個(gè)概念需要大家了解一下,這有利于我們?cè)谌粘=涣髦刑接懴嚓P(guān)的問題。
層疊順序( Stacking Order ),這個(gè)其實(shí)就是很字面的意思,它表示元素發(fā)生層疊時(shí)按照特定的順序規(guī)則在 Z 軸上垂直顯示順序。
層疊等級(jí)( Stacking Level ),這個(gè)很好理解了。層疊等級(jí)就是個(gè)描述元素層疊順序的一個(gè)名詞,它決定了同一個(gè)層疊上下文中元素在 Z 軸上的顯示順序。舉個(gè)例子:A 元素與 B 元素重疊之后,A 元素在 B 元素上面。那么我們就可以直接說 A 元素的層疊等級(jí)大于 B 元素的層疊等級(jí)。
五、層疊規(guī)則當(dāng)元素互相層疊的時(shí)候,顯示規(guī)則如下。
當(dāng)互相層疊的元素都是層疊上下文元素,即明確的有 z-index
值的時(shí)候(沒有明確的z-index
值的層疊上下文也就是 CSS3 創(chuàng)建的層疊上下文 z-index
值為 0
)直接比較 z-index
的值,值大的處在值小的元素的上方。
當(dāng)元素處于同一層疊上下文內(nèi)時(shí)可按照如下規(guī)則進(jìn)行層疊判斷。
當(dāng)元素的層疊等級(jí)一致、層疊順序也相同的時(shí)候,在 DOM 流中處于后面的元素會(huì)覆蓋前面的元素。
感謝各位的閱讀,以上就是“web前端中CSS層疊上下文的方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)web前端中CSS層疊上下文的方法是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!