CSS進(jìn)階10-分層顯示

(注1:如果有問題歡迎留言探討,一起學(xué)習(xí)!轉(zhuǎn)載請注明出處,喜歡可以點(diǎn)個(gè)贊哦!)
(注2:更多內(nèi)容請查看我的目錄。)

1. 重疊與覆蓋

前面我們一直提到,不同的元素產(chǎn)生的盒有可能發(fā)生重疊,那么在這種情況下,哪個(gè)盒子會最終展示給用戶看呢?在CSS入門系列文章 CSS入門11-定位與覆蓋中我們對不同元素生成的盒的重疊情況作了比較與分析,講到了z-index屬性,這一節(jié)我們引入兩個(gè)新的關(guān)鍵詞,堆疊級別stack level和堆疊上下文stack context。
注:這里stack我翻譯成了堆疊,沒有翻譯成堆棧或者層次。你也可以翻譯為層疊級別和層疊上下文(這里的層疊和CSS入門系列中提到的三大特性之層疊性是有區(qū)別的,準(zhǔn)確說那里的層疊性是指選擇器的層疊性),或者堆棧級別和堆棧上下文,這點(diǎn)取決于你的理解和習(xí)慣。這也是我對一些名詞經(jīng)常會直接使用英文的原因,避免歧義。

2. 堆疊上下文 stack context 和堆疊級別 stack level

在CSS 2.2中,每個(gè)盒都有三個(gè)維度的位置。除了它們的水平和垂直位置之外,盒子還會沿著一個(gè)“z軸”放置,并且一個(gè)在另一個(gè)的頂部。盒子在在視覺上的重疊效果顯示與Z軸位置相關(guān)。


堆疊上下文用以描述渲染樹rendering tree被繪制到畫布上的順序。堆疊上下文可以包含更多堆疊上下文。從其父級堆疊上下文的角度來看,堆疊上下文是原子的。其他堆疊上下文中的盒子不能出現(xiàn)在該堆疊上下文的任何盒子之間。



如圖:堆疊上下文1 (Stacking Context 1)是由文檔根元素形成的。 堆疊上下文2和3 (Stacking Context 2, 3) 都是堆疊上下文1 (Stacking Context 1) 上的堆疊層。 他們各自也都形成了新的堆疊上下文,其中包含著新的堆疊層。

每個(gè)盒子都屬于一個(gè)堆疊上下文。在給定堆疊上下文中的每個(gè)定位框都有一個(gè)整數(shù)的堆疊級別,通過與同一堆棧上下文中其他盒子堆棧級別比較得出其在z軸的位置。具有較高堆疊級別的盒始終格式化在較低堆疊級別的盒之前(“在...之前”表示“在用戶面對屏幕時(shí)更靠近用戶”)。盒子可能有負(fù)的堆疊級別。根據(jù)文檔樹的順序,在堆疊環(huán)境中具有相同堆疊級別的盒按照先后順序堆疊。

根元素形成根堆疊上下文。其他堆疊上下文由具有非'auto'的'z-index'計(jì)算值的任何定位元素(包括相對定位元素)生成。堆疊上下文不一定與包含塊有關(guān)。在未來CSS級別中,其他屬性可能會引入堆疊上下文,例如“ 不透明度opacity[CSS3COLOR]

3. z-index屬性

z-index

對于一個(gè)定位盒positioned box,屬性z-index用于指定:

  1. 當(dāng)前堆疊上下文中盒的堆疊級別。
  2. 該盒是否會創(chuàng)建堆疊上下文。

z-index取值有如下含義:

  • <integer>
    此整數(shù)是當(dāng)前堆疊上下文中生成的盒的堆棧級別。該盒還創(chuàng)建了一個(gè)新的堆疊上下文。
  • auto
    當(dāng)前堆棧上下文中生成的盒的堆棧級別為0。如果該盒具有'position:fixed'或者它是根,那么也會創(chuàng)建一個(gè)新的堆疊上下文。

4. 堆疊順序

在每個(gè)堆疊上下文中,以下圖層按照從后到前的順序進(jìn)行繪制:

  1. the background and borders of the element forming the stacking context.
  2. the child stacking contexts with negative stack levels (most negative first).
  3. the in-flow, non-inline-level, non-positioned descendants.
  4. the non-positioned floats.
  5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.
  6. the child stacking contexts with stack level 0 and the positioned descendants with stack level 0.
  7. the child stacking contexts with positive stack levels (least positive first).

在每個(gè)堆疊上下文中,繪制堆棧級別為0(在層6中),未定位的浮動(第4層),行內(nèi)塊(第5層)和行內(nèi)表(第5層)中的定位元素,就好像這些元素本身產(chǎn)生了新的堆疊上下文,除了它們的定位后代和任何可能的子堆疊上下文也參與當(dāng)前的堆疊上下文。

注:關(guān)于這篇文章的知識點(diǎn),我推薦大家閱讀前端大神張鑫旭的這篇blog深入理解CSS中的層疊上下文和層疊順序

參考

https://www.w3.org/TR/CSS22/visuren.html#visual-model-intro
https://www.w3.org/TR/CSS22/zindex.html
What You May Not Know About the Z-Index Property
關(guān)于z-index 那些你不知道的事
談?wù)勔恍┯腥さ腃SS題目(三)-- 層疊順序與堆棧上下文知多少
深入理解CSS中的層疊上下文和層疊順序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,067評論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內(nèi)容