Z-index 層疊上下文和層疊水平

心葉發表於2018-04-27

作者:心葉
時間:2018-04-27 11:49

第一步:基本概念。

層疊上下文是一個概念上的東西,學過編譯原理的人應該對這裡的上下文很清楚,而層疊不過就是一個詞罷了,解釋一下就是,根據層疊規則決定位置的一個環境。還需要注意的一點是,具有層疊上下文的元素比普通元素要更靠近眼睛。

層疊水平也是一個概念上的東西,用大白話說就是:在一個層疊上下文的環境下,裡面的元素在z軸上的排列順序的規則,而層疊順序就是這裡說的具體規則,是實踐的東西。

第二步:層疊順序。

需要記住的是,內部的層疊上下文及其子元素均受制於外部的層疊上下文,下面是層疊順序,從遠到近。

1.層疊上下文background/border;

2.負z-index;

3.block塊狀盒子模型;

4.float浮動盒子;

5.z-index為auto或看成0的不依賴z-index的上下文;

6.z-index為auto或看成0;

7.正z-index。

第三步:產生條件。

根層疊上下文(指的是頁面根元素,也就是 元素)。

定位元素與傳統層疊上下文(使用了position:absolute、position:fixed或position:relative的定位元素,且z-index的值是數字會產生疊上下文)。

CSS3與新時代的層疊上下文:

1.一個被設定了display:flex的元素包含的元素對其設定z-index為數值時其會產生層疊上下文;

2.設定了opacity不為1的元素會產生層疊上下文;

3.設定了transform不為none的元素會產生層疊上下文;

4.設定了mix-blend-mode不為normal的元素會產生層疊上下文;

5.設定了filter不為none的元素會產生層疊上下文;

6.設定了isolation:isolate的元素會產生層疊上下文;

7.設定了-webkit-overflow-scrolling的元素會產生層疊上下文(移動端);

8.設定了will-change的元素會產生層疊上下文。

相關文章