理解和操作z index

2021-08-28 23:30:09 字數 2312 閱讀 5931

z-index,這個css屬性我感覺是很多人容易忽略的乙個點。而且理解的不夠好(當然也包括我自己啦),但是不理解一些其他影響元素層疊秩序的因素——層疊上下文,定位,透明度。

1.z-index究竟是什麼?

=>盒子在堆疊上下文中的堆疊級別

=>盒子是否建立了乙個堆疊上下文

什麼是堆疊上下文,那就是我們看到的網頁實際上是三維的,和裝置螢幕垂直的就是元素所在的渲染層,元素就是在這個層上進行堆疊。

2.預設堆疊次序(沒有z-index的元素)*

=>根節點的背景和邊框

=>文件流中的後代元素,按照在html中出現的順序

=>脫離文件流的定位元素,按照html中出現的順序

3.重寫預設堆疊次序,也就是賦值z-index

當z-index大於0,那麼意味著這個元素「離」裝置螢幕距離更近。z-index最高的那乙個才是離裝置螢幕最近的那個一,但是生效的前提是,元素處於同乙個堆疊上下文當中

4.堆疊上下建立的條件

a.首先頁面的根元素< html >建立的預設堆疊上下文

b.對於其他元素建立堆疊上下文的條件是:成為定位元素,並且具有非auto的z-index屬性值,或者元素具有小於1的opacity屬性

5.管理z-index

在簡單的網頁應用當中,堆疊上下文貌似不是乙個什麼重要的事情,但是當介面越來越複雜,並出現各種豐富的ui控制項,頁面就出現了多個堆疊上下文。當頁面出現多個頁面上下文時,管理z-index就會越來越複雜,同時也會變得越來越重要。

因此程式設計式的管理z-index就是一種非常可靠的方案。

/**

*管理z-index堆疊上下文

**/let

isposzindex

=(el)

=>

letdoesstylezindex

=(el)

=>

if(styles.transform!==

'none')if

(styles.transformstyle ===

'preserve-3d')if

(styles.perspective !==

'none')if

(styles.flowfrom!==

'none'

&&styles.content!==

'normal')if

(styles.position ===

'fixed'

)return

false

}let

zindexadmin

=(global)

=>

,getstackctx

(el)

return parentnode

},bringtofront

(el,createstackingctx,root)

,sendtoback

(el,createstackingctx,root)}}

/***修改元素的z-index

**/let

modifyzindex

=(el,increment)

=>

if(increment)

else}}

if(!siblingmaxminzindex&&

!increment)

siblings[i]

.style.zindex ==

++siblingzindex;}}

} el.style.zindex = increment?siblingmaxminzindex+1:

(siblingmaxminzindex?siblingmaxminzindex-1:

0)}/**

*修改元素的z-index

*設計思想:移動對應的元素,使之出現在元素所在的堆疊上下文頂部或者底部,並且在必要的時候,在父元素上建立堆疊上下文

*createstackingctx引數控制這個行為:true,設定父元素為position:relative,z-index=0,

**/let

alterzindex

=(el,createstackingctx,root,increment)

=>

else

}modifyzindex

(el,increment);if

(root&&

(root!==zindexadmin.

getstackctx

(el)

&&stackctxel.tagname !==

'html'))

}

喜歡的朋友賞個讚哈!

深入理解z index

要解決的問題 在頁面編寫的過程中,經常需要處理元素的重疊。重疊的順序不當則容易造成元素被錯誤地遮蓋等現象。一般地,有很多人認為只需要指定元素的z index即可調整重疊的順序,但是實際上並不是這樣的。重新理解頁面維度 當我們開啟乙個網頁,我們會看到乙個二維的世界。在這個二維的世界裡,頁面裡的box ...

理解 CSS 的 z index 屬性

通常認為html頁面是二維的,但實際上,css還有乙個z index屬性,允許層疊元素。所有的盒模型元素都處於三維座標系中。除了我們常用的橫座標和縱座標,盒模型元素還可以沿著 z軸 層疊擺放,當他們相互覆蓋時,z軸順序就變得十分重要。假定元素沒有指定z index屬性,那麼元素按照如下順序疊放 從底...

css深入理解z index

z index auto z index z index inherit 繼承 1.支援負值 2.支援css3 animation動畫 3.在css2.1時代,需要和定位元素 position relative absolute fixed sticky 配合使用 keyframes zindex ...