css深入淺出:03_堆疊上下文

  • 1 . 什么是堆疊順序?
  • 2 . 什么是堆疊上下文贾漏?

堆疊順序:
  • background
  • border
  • 塊級
  • 浮動
  • 內(nèi)聯(lián)
  • z-index: 0
  • z-index: +

判斷一個人是否了解堆疊上下文的概念時候学,我想到了下面的這道題

初識堆疊上下文.png

看上面的圖思考下面的這個問題:
border和background之間的關系是什么?
A:在同一面上纵散,相平齊
B:border更加靠近用戶
C:background更加靠近用戶

為了驗證上面的猜想梳码,我引入0.5透明度border的現(xiàn)象來實現(xiàn)最終效果


顯然可以看出:border更加靠近用戶。
由此我們可以想到DIV它并不是一個平面的物體伍掀,也是有層次的概念掰茶。

通過平面和側面的圖也可以看出效果

image

同樣,為了驗證在DIV中寫入文字驗證最終效果:
image

側面實際呈現(xiàn)是:
image

接著我在div的子元素引入的child來驗證堆疊效果:
image

最終的結果是div的元素效果是蓋不住文字(內(nèi)聯(lián)元素)效果蜜笤。也就是說內(nèi)聯(lián)元素離用戶更加接近濒蒋。
image

最后我想到了一個同級化的問題,當我的子代出現(xiàn)內(nèi)聯(lián)元素和父級同時出現(xiàn)內(nèi)聯(lián)元素時把兔,誰會更加接近用戶的眼睛沪伙?

image
結果是非常明顯的,誰最后寫入誰就更加接近用戶的眼睛(蓋住前面元素)县好。
上面我們通過猜想驗證的方式簡單的介紹了border围橡,background和塊級元素,接下來我們再來驗證一下浮動元素:

為了更直觀的看出效果缕贡,我給內(nèi)聯(lián)元素‘你好’設置了text-indent: -10px;
效果如圖:

image

很顯然翁授,內(nèi)聯(lián)元素的更加出現(xiàn)在上層拣播,而浮動的元素天生優(yōu)先于塊級元素
image
截止至目前我們看到的所有效果:內(nèi)聯(lián)元素>浮動元素/浮動內(nèi)聯(lián)元素>塊級元素>border>background
其中,有關于內(nèi)聯(lián)元素誰最后寫入誰更加浮現(xiàn)在用戶面前收擦。

接下來我們接著比較絕對定位和相對定位元素的堆疊上下文的優(yōu)先級誰更高贮配?

image
可以看出經(jīng)過絕對定位的元素優(yōu)先級是高于浮動定位的元素的!

image

接下來比較z-index和position:relative之間的優(yōu)先級:
image

通過對relative設置margin-top來清楚的可以看到relative的優(yōu)先級是高于z-index的塞赂。
這時候我們得出一個結論:只有被定位的元素的優(yōu)先級等級才會高于沒有被定位的優(yōu)先級的元素(position:static)

image

同樣泪勒,通過上圖我們可以得出,設置了relative的元素后出現(xiàn)的元素優(yōu)先級一定高于先出現(xiàn)的元素减途。
image

而對relative設置了z-index(>=1)元素的優(yōu)先級則高于沒有設置z-index的relative的元素酣藻。
在考慮position:absolute與relative做對比時,同樣也是只考慮z-index的影響:
image

上圖說明對relative與absolute做比較時鳍置,誰后出現(xiàn)誰的優(yōu)先級就更高辽剧。可以把absolute和relative當作同級來看待税产,但是如果對其中一個元素設置了z-index就會可以看出通過設置absolute/relative的元素優(yōu)先級都會高于沒有設置z-index的元素怕轿。

注:如果父元素z-index:0 子元素設置z-index:-1則子元素則會顯示出來

結論.png

所以說,正如自然界很多物質(zhì)一樣辟拷。我們無法解釋它的原理撞羽,但是可以通過現(xiàn)象來判斷它的屬性。如果這么說起來你聽的有點麻煩衫冻,那么我問你:"請問:什么是桌子诀紊?" 我想你可能說:上面是個平板下面有四根腿撐著的木頭叫做桌子.那么接著反問你:板凳算不算是桌子?如果算隅俘,為什么不叫板凳是桌子邻奠?如果不算,桌子不也是四根腿为居,一面平板嗎碌宴!所以究其本質(zhì)我們可以說:用來吃飯的載體我們可以判斷它就是桌子。

同樣的道理我們可以引申到堆疊上下文蒙畴,我們只知道一些屬性會觸發(fā)上下文贰镣,但是并不知道堆疊上下文是什么。
所以觸發(fā)堆疊上下文的內(nèi)容有以下:

  • 根元素(HTML)
  • z-index值不為”auto“的絕對定位/相對定位
  • 一個 z-index 值不為 "auto"的 flex 項目 (flex item)膳凝,即:父元素 display: flex|inline-flex
  • opacity 屬性值小于 1 的元素(參考 the specification for opacity)
  • transform 屬性值不為 "no ne"的元素
  • mix-blend-mode 屬性值不為 "normal"的元素
  • filter值不為“none”的元素
  • perspective值不為“none”的元素
  • isolation 屬性被設置為 "isolate"的元素
  • position: fixed
  • 在 will-change 中指定了任意 CSS 屬性碑隆,即便你沒有直接指定這些屬性的值(參考 這篇文章)
  • -webkit-overflow-scrolling 屬性被設置 "touch"的元素

image

通過上圖我們可以看出,圖中沒有z-index蹬音。但是依然形成了堆疊上下文的效果上煤。之所以引發(fā)這種效果的原因是滿足了堆疊上下文的第一個條件根元素<html>
其次,如果父元素HTML是一個家長祟绊,是其內(nèi)部都具備堆疊上下文的結構楼入。但是如果給一個子元素單獨設置堆疊上下文,而另一個子元素沒有設置堆疊上下文牧抽,則沒有設置堆疊上下文效果的內(nèi)容將會被掩蓋嘉熊。
image

上圖解釋了如果兩個子元素同時設置了堆疊上下文那么兩個子元素則具備兄弟同時競爭,后出現(xiàn)的優(yōu)先級較高的效果.
最后我們需要考慮到一種最特殊的情況:如果給最高級元素設置z-index:-1則后代元素就會顯示出來扬舒,這是因為此時的層疊上下文從總體來看是一個整體阐肤,所以后代元素會顯示出來,而不是被子代或者孫子代掩蓋住讲坎。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孕惜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子晨炕,更是在濱河造成了極大的恐慌衫画,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮栗,死亡現(xiàn)場離奇詭異削罩,居然都是意外死亡,警方通過查閱死者的電腦和手機费奸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門弥激,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人愿阐,你說我怎么就攤上這事微服。” “怎么了缨历?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵以蕴,是天一觀的道長。 經(jīng)常有香客問我戈二,道長舒裤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任觉吭,我火速辦了婚禮腾供,結果婚禮上,老公的妹妹穿的比我還像新娘鲜滩。我一直安慰自己伴鳖,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布徙硅。 她就那樣靜靜地躺著榜聂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗓蘑。 梳的紋絲不亂的頭發(fā)上须肆,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天匿乃,我揣著相機與錄音,去河邊找鬼豌汇。 笑死幢炸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的拒贱。 我是一名探鬼主播宛徊,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逻澳!你這毒婦竟也來了闸天?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斜做,失蹤者是張志新(化名)和其女友劉穎苞氮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓤逼,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡葱淳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抛姑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赞厕。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖定硝,靈堂內(nèi)的尸體忽然破棺而出皿桑,到底是詐尸還是另有隱情,我是刑警寧澤蔬啡,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布诲侮,位于F島的核電站,受9級特大地震影響箱蟆,放射性物質(zhì)發(fā)生泄漏沟绪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一空猜、第九天 我趴在偏房一處隱蔽的房頂上張望绽慈。 院中可真熱鬧,春花似錦辈毯、人聲如沸坝疼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钝凶。三九已至,卻和暖如春唁影,著一層夾襖步出監(jiān)牢的瞬間耕陷,已是汗流浹背掂名。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哟沫,地道東北人铆隘。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像南用,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掏湾,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案裹虫? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,737評論 1 92
  • 1. 堆疊順序 堆疊順序(stacking order):HTML 內(nèi)元素發(fā)生層疊的時候的特定垂直順序,即元素在用...
    饑人谷_風爭閱讀 3,330評論 0 9
  • 一:在制作一個Web應用或Web站點的過程中,你是如何考慮他的UI融击、安全性筑公、高性能、SEO尊浪、可維護性以及技術因素的...
    Arno_z閱讀 1,141評論 0 1
  • 轉(zhuǎn)載請聲明 原文鏈接地址 關注公眾號獲取更多資訊 第一部分 HTML 第一章 職業(yè)規(guī)劃和前景 職業(yè)方向規(guī)劃定位...
    程序員poetry閱讀 16,524評論 32 459
  • 這幾天沸沸揚揚都在傳阿里高管出軌的事拇涤,是同一個小區(qū)的鄰居捣作,孩子還跟我們家小朋友一個幼兒園,在各種群有交集鹅士,也在朋友...
    kimi媽媽閱讀 226評論 0 0