聲明
定位元素:
position屬性值設置除默認值static以外的元素,包括relative,absolute,fixed。
平臺:win/IE win/FF
z-index
用來確定定位元素在垂直于顯示屏方向(以下稱為Z軸)上的層疊順序
值:auto | 整數 | inherit
默認:auto
適用于:定位元素
繼承性:no
理解stacking context
每個box都歸屬于一個stacking context,它是元素在z軸方向上定位的參考。根元素形成 root stacking context,其他stacking context由定位元素設置z-index為非auto時產生。如#div1{position:relative;z-index:0;}即可使 id=div1的元素產生stacking context。stacking context和 containing block 并沒有必然聯系。
理解stack level
在一個stacking context中的每個box,都有一個stack level(即層疊級別,以下統一用stack level),它決定著在同一stacking context中每個box在z軸上的顯示順序。同一stacking context中,stack level值大的顯示在上,stack level值小的顯示在下,同一stack level的遵循后來居上的原則(back-to-front )。不同stacking context中,元素顯示順序以父級的stacking context的stack level來決定顯示的先后情況。于自身stack level無關。注意stack level和z-index并不是統一概念。(將在后文慢慢理解)
stack level規則
每個stacking context中可包含塊級(block)元素、內聯(行內inline)元素,還有設置float屬性的元素、定位元素等等他們在同一父級 stacking context中的顯示順序是怎樣的?即stack level是怎樣的呢?比如一個塊級元素和內聯元素發生層疊的話誰會在上面呢?是不是誰在后面誰就在上面呢?
根據w3c關于 stack level 的介紹可以得出以下stack level規則
每個stacking context都包括以下stack level (后來居上):
父級stacking context的背景、邊界
z-index值為負值的定位元素(值越小越在下)
文本流中非定位的、block塊級子元素
文本流中非定位的、float浮動子元素
仿佛能產生stacking context的inline元素
否則,inline元素的stack level將在block元素之前。
z-index:auto/0的定位元素
z-index值為正的定位元素(值越大越在上)
以上stack level在瀏覽器執行情況:
firefox3.0下測試完全吻合,firefox2.0下稍有不同即:“z-index值為負值的定位元素”在“父級stacking context的背景、邊界”之前。
ie6.0和7.0中:inline元素的stack level位于block元素之前,且“文本流中非定位的、float浮動子元素”(以下簡稱浮動元素)和“文本流中非定位的、block塊級子元素”(以下簡稱block元素)處于同一級。
上一頁12 3 下一頁 閱讀全文
|
新聞熱點
疑難解答