成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

CSS 層疊上下文(Stacking Context)

marek / 3158人閱讀

摘要:當(dāng)?shù)诙拥娜萜骱凶由?jí)為層疊上下文時(shí),紅色盒子及灰色盒子的軸層級(jí)受制于第二層的容器盒子。當(dāng)元素處于同一層疊上下文內(nèi)時(shí)可按照如下規(guī)則進(jìn)行層疊判斷。

本文首發(fā)于政采云前端團(tuán)隊(duì)博客:CSS 層疊上下文(Stacking Context)

在網(wǎng)頁(yè)制作的過(guò)程中,元素與元素之間的位置關(guān)系,在坐標(biāo)軸上一般可體現(xiàn)為 X 軸、Y 軸和 Z 軸。對(duì)于 X 軸和 Y 軸的定位大多數(shù)開(kāi)發(fā)都能比較直觀的搞清楚,而 Z 軸 則相對(duì)較為模糊,或者說(shuō)不能全面的理解Z軸的顯示邏輯。

大多數(shù)人都知道可以使用 position 屬性配合 z-index 屬性解決元素的 Z 軸顯示問(wèn)題,對(duì)于更深層次的原理卻不太了解。本文主要介紹了層疊上下文、層疊等級(jí)、層疊順序等概念。目的就是為了理清元素的 Z 軸顯示順序的內(nèi)部邏輯。

一、現(xiàn)象 Z 軸上的顯示順序
// 穿透父級(jí)容器的 z-index
  
  

// 不能穿透父級(jí)容器的 z-index
 
  

兩段代碼基本一樣,只有在深藍(lán)色盒子處有個(gè) z-index 不同。當(dāng)父級(jí)容器的 z-indexauto 的時(shí)候,紅色盒子穿過(guò)了父級(jí)容器出現(xiàn)在了父級(jí)容器的背后(被父級(jí)容器遮擋?。?。當(dāng)父級(jí)容器的 z-index0 的時(shí)候,紅色盒子無(wú)法穿過(guò)父級(jí)容器。

元素 Z 軸對(duì)比
// 元素 Z 軸對(duì)比
  
  

// 元素 Z 軸對(duì)比
  
  

同樣的,以上兩段代碼基本一樣,都是有 3 層的 DIV 盒子。最外層是一個(gè)深藍(lán)色盒子,中間一層容器盒子,最下面一層紅色及灰色盒子。不同之處在于中間這層容器盒子的 z-indexauto 變成了 0。最底下的紅色及灰色盒子的 Z 軸層級(jí)比較的結(jié)果就截然不同。

由以上兩個(gè)例子我們可以發(fā)現(xiàn),當(dāng) z-index 為數(shù)值并且生效的時(shí)候,容器會(huì)發(fā)生一種變化,會(huì)使得容器內(nèi)的子組件無(wú)法穿過(guò)容器本身,并且子組件的層級(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ī)則來(lái)。

這條專門(mén)指的由 CSS3 屬性創(chuàng)建出來(lái)的層疊上下文,其本身未指定 z-index。其層疊等級(jí)應(yīng)該是 z-index: 0。
三、創(chuàng)建

層疊上下文大體上可分為三種創(chuàng)建方式

頁(yè)面根元素,稱為根層疊上下文

z-index 值為數(shù)值的定位元素的傳統(tǒng)層疊上下文

其他 CSS3 屬性(詳情可動(dòng)手實(shí)驗(yàn)了解)

z-index 值不為 autoflex 項(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)建層疊上下文。這就是為什么在過(guò)去 IE6/IE7 的 z-index 一直是個(gè)老大難的原因。
四、兩個(gè)概念,層疊順序、層疊等級(jí)

在說(shuō)層疊規(guī)則之前兩個(gè)概念需要大家了解一下,這有利于我們?cè)谌粘=涣髦刑接懴嚓P(guān)的問(wèn)題。

層疊順序( Stacking Order ),這個(gè)其實(shí)就是很字面的意思,它表示元素發(fā)生層疊時(shí)按照特定的順序規(guī)則在 Z 軸上垂直顯示順序。

層疊等級(jí)( Stacking Level ),這個(gè)很好理解了。層疊等級(jí)就是個(gè)描述元素層疊順序的一個(gè)名詞,它決定了同一個(gè)層疊上下文中元素在 Z 軸上的顯示順序。舉個(gè)例子:A 元素與 B 元素重疊之后,A 元素在 B 元素上面。那么我們就可以直接說(shuō) A 元素的層疊等級(jí)大于 B 元素的層疊等級(jí)。

五、層疊規(guī)則

當(dāng)元素互相層疊的時(shí)候,顯示規(guī)則如下。

當(dāng)互相層疊的元素都是層疊上下文元素,即明確的有 z-index 值的時(shí)候(沒(méi)有明確的 z-index 值的層疊上下文也就是 CSS3 創(chuàng)建的層疊上下文 z-index 值為0 )直接比較 z-index 的值,值大的處在值小的元素的上方。

當(dāng)元素處于同一層疊上下文內(nèi)時(shí)可按照如下規(guī)則進(jìn)行層疊判斷。

當(dāng)元素的層疊等級(jí)一致、層疊順序也相同的時(shí)候,在 DOM 流中處于后面的元素會(huì)覆蓋前面的元素。

參考文章

深入理解 CSS 中的層疊上下文和層疊順序

層疊上下文

徹底搞懂 CSS 層疊上下文、層疊等級(jí)、層疊順序、z-index

招賢納士(Recruitment)

招人,前端,隸屬政采云前端大團(tuán)隊(duì)(ZooTeam),50 余個(gè)小伙伴正等你加入一起浪~ 如果你想改變一直被事折騰,希望開(kāi)始能折騰事;如果你想改變一直被告誡需要多些想法,卻無(wú)從破局;如果你想改變你有能力去做成那個(gè)結(jié)果,卻不需要你;如果你想改變你想做成的事需要一個(gè)團(tuán)隊(duì)去支撐,但沒(méi)你帶人的位置;如果你想改變既定的節(jié)奏,將會(huì)是“5年工作時(shí)間3年工作經(jīng)驗(yàn)”;如果你想改變本來(lái)悟性不錯(cuò),但總是有那一層窗戶紙的模糊… 如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望參與到隨著業(yè)務(wù)騰飛的過(guò)程,親手參與一個(gè)有著深入的業(yè)務(wù)理解、完善的技術(shù)體系、技術(shù)創(chuàng)造價(jià)值、影響力外溢的前端團(tuán)隊(duì)的成長(zhǎng)歷程,我覺(jué)得我們?cè)摿牧摹H魏螘r(shí)間,等著你寫(xiě)點(diǎn)什么,發(fā)給 [email protected]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/116363.html

相關(guān)文章

  • CSS魔法堂:你真的理解z-index嗎?

    摘要:與的映射關(guān)系為。與根對(duì)應(yīng)的對(duì)應(yīng)的層疊上下文,是其他的祖先,的范圍覆蓋整條。注意的默認(rèn)值為,自動(dòng)賦值為。對(duì)于,它會(huì)將賦予給對(duì)應(yīng)的,而則不會(huì)。 一、前言                               ?假如只是開(kāi)發(fā)簡(jiǎn)單的彈窗效果,懂得通過(guò)z-index來(lái)調(diào)整元素間的層疊關(guān)系就夠了。但要將多個(gè)彈窗間層疊關(guān)系給處理好,那么充分理解z-index背后的原理及兼容性問(wèn)題就是必要的知識(shí)...

    andycall 評(píng)論0 收藏0
  • 層疊下文stacking context】與層疊順序【stacking order】

    摘要:層疊上下文可以嵌套,內(nèi)部層疊上下文及其所有子元素均受制于外部的層疊上下文。例當(dāng)按以下設(shè)置,則出現(xiàn)紅色在綠色之上的效果。如何觸發(fā)觸發(fā)一個(gè)元素形成層疊上下文有以下方法,摘自根元素值不為的絕對(duì)相對(duì)定位一個(gè)值不為的項(xiàng)目,即父元素。 層疊上下文【stacking context】 對(duì)于stacking context,在MDN中的描述是 Stacking context is the three...

    Developer 評(píng)論0 收藏0
  • CSS 中重要的層疊概念

    摘要:標(biāo)簽中的一切都被置于這個(gè)默認(rèn)的層疊上下文的一個(gè)層疊層上物品放在桌子上。在層疊上下文中,其子元素按照上面解釋的規(guī)則進(jìn)行層疊。在中所有的盒模型元素都處于三維坐標(biāo)系中。 最近在項(xiàng)目的過(guò)程中遇到了一個(gè)問(wèn)題,menu-bar希望始終顯示在最上面,而在之后的元素都顯示在它之下,當(dāng)時(shí)設(shè)置了 z-index 也沒(méi)有效果,不知道什么原因,因此找了一下css有關(guān)層疊方面的資料,解決了這個(gè)問(wèn)題,這里記錄一下...

    sshe 評(píng)論0 收藏0
  • CSS > CSS3 中的層疊下文初探

    摘要:但該盒不建立新的層疊上下文,除非是根元素。以上是基于的層疊上下文介紹。同級(jí)情況下,按照二者在源代碼中的順序,居后的又重新占領(lǐng)高地了。現(xiàn)在我們看以下源代碼這個(gè)時(shí)候,以視口為包含塊進(jìn)行定位和大小計(jì)算,將會(huì)鋪滿整個(gè)屏幕。 前言:關(guān)于層疊上下文,筆者還沒(méi)有去閱讀更詳細(xì)的 W3C 規(guī)范來(lái)了解更本質(zhì)的原理(表打我,等我校招拿到 offer 了我就讀好伐 T_T)。一直聽(tīng)說(shuō) CSS3 里的層疊上下文...

    pcChao 評(píng)論0 收藏0
  • z-index

    摘要:層疊上下文是中的一個(gè)三維的概念如果一個(gè)元素含有層疊上下文我們就可以理解為這個(gè)元素在軸上就高人一等軸表示用戶與屏幕之間并不存在的的垂直線通俗點(diǎn)講就是人眼看屏幕的視線這條垂直于屏幕的線擁有層疊上下文的元素包括頁(yè)面根元素天生具有層疊上下文稱之為根 stacking context 層疊上下文(stacking context)是HTML中的一個(gè)三維的概念.如果一個(gè)元素含有層疊上下文,我們就可...

    vincent_xyb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<