層疊上下文和z-index

理解渲染過程和層疊順序

瀏覽器會先繪製全部非定位的元素,而後繪製定位元素。默認狀況下,全部的定位元素會出如今非定位元素前面。瀏覽器

用z-index控制層疊順序

1. 擁有較高z-index的元素出如今擁有較低z-index的元素前面。擁有負數z-index的元素出如今靜態元素後面。
2. z-index只在定位元素上生效,不能用它控制靜態元素。
3. 給一個定位元素加上z-index能夠建立層疊上下文。

層疊上下文

一個層疊上下文包含一個元素或者由瀏覽器一塊兒繪製的一組元素。其中一個元素會做爲層疊上下文的根,好比給一個定位元素加上z-index的時候,它就變成了一個新的層疊上下文的根。全部後代元素就是這個層疊上下文的一部分。code

層疊上下文以外的元素沒法疊放在層疊上下文內的兩個元素之間。渲染

1.層疊上下文的根
2.z-index爲負的定位元素(及其子元素)
3.非定位元素
4.z-index爲auto的定位元素(及其子元素)
5.z-index爲正的定位元素(及其子元素)