close

簡潔的網頁設計幫你拉顧客 -網上推廣


原文:http://rong179.blogbus.com/logs/24966909.html

聲明

定位元素: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元素)處于同一級。


arrow
arrow
    創作者介紹
    創作者 pagepe 的頭像
    pagepe

    pagepe的部落格

    pagepe 發表在 痞客邦 留言(0) 人氣()