CSS 定位之 z-index 問(wèn)題分析

關(guān)于z-index,目前遇到的一些問(wèn)題
1. 某些瀏覽器下元素層級(jí)遮蓋存在bug;
2. 某個(gè)元素z-index設(shè)的太大,導(dǎo)致始終無(wú)法被遮蓋;
3. js動(dòng)態(tài)計(jì)算z-index,導(dǎo)致元素覆蓋關(guān)系部可控
層級(jí)遮蓋bug出現(xiàn)的原因:
IE6/7對(duì)z-index的表現(xiàn)跟IE8及以上瀏覽器不一致。position值為非static時(shí),如果不設(shè)置z-index屬性,IE6/7下z-index默認(rèn)為0,而IE8及以上瀏覽器z-index為auto,且zindex:auto的元素不參與堆疊優(yōu)先級(jí)比較。
ff/chrome | z-index | IE6/7 | IE8/9 |
不設(shè)置 | 0 | auto | auto |
number | number | number | number |
層級(jí)關(guān)系的比較:
先看幾點(diǎn)結(jié)論:
1. 對(duì)于同級(jí)元素,默認(rèn)(或position:static)情況下文檔流后面的元素會(huì)覆蓋前面的;
2. 對(duì)于同級(jí)元素,position不為static且z-index存在的情況下z-index大的元素會(huì)覆蓋z-index小的元素,即z-index越大優(yōu)先級(jí)越高;
3. IE6/7下position不為static,且z-index不存在時(shí)z-index為0,除此之外的瀏覽器z-index為auto
4. z-index為auto的元素不參與層級(jí)關(guān)系的比較,由向上遍歷至此且z-index不為auto的元素來(lái)參與比較。
在上面2點(diǎn)結(jié)論的基礎(chǔ)上,我們引入“定位樹(shù)”(非w3c官方詞匯)的概念來(lái)做層級(jí)的比較。
在定位樹(shù)這個(gè)概念下,瀏覽器在渲染dom節(jié)點(diǎn)時(shí),除了生成dom樹(shù)之外,還會(huì)根據(jù)dom樹(shù)中的定位元素(position不為static)生成“定位樹(shù)”:
dom樹(shù)、定位樹(shù)對(duì)比如下(其中邊上有紅色圓圈的表示該元素position不為static):
可以這樣理解:定位樹(shù)中包含了dom樹(shù)中position不為staitc的全部元素。非同級(jí)元素比較層級(jí)關(guān)系可以這樣比較:
1. 向上遍歷定位樹(shù)的父節(jié)點(diǎn)直到2個(gè)元素為同級(jí)元素。
2. 根據(jù)上面的結(jié)論來(lái)最最后的比較。層級(jí)高的元素會(huì)越靠近用戶的顯示器并能覆蓋層級(jí)低的元素。
實(shí)例一:假設(shè)上圖中所有標(biāo)紅色元素position都不為static;且z-index=1,根據(jù)上面的比較規(guī)則可以知道:
1. c > (b && b *) > (a && a *) 即元素c及c的所有定位元素層級(jí)比a、b高
2. m > h、 g > k、d > m
實(shí)例二:假設(shè)a的position不為static,z-index屬性不存在,定位樹(shù)中a的子元素z-index一次分別為1,2,3,4...其它定位元素z-index:1:
1. 根據(jù)結(jié)論三有:IE6/7下 b > (a && a *) 即元素b的層級(jí)比a及a的所有定位元素層級(jí)高,其它瀏覽器下:i > h > b > d
相關(guān)文章
- z-index最大值,最小值以及同值時(shí)層的高低,做了個(gè)測(cè)試z-index的最大值,有幾個(gè)結(jié)論如下2009-05-28
- z-index屬性簡(jiǎn)介 引用: z-index : auto | number auto:默認(rèn)值。 number:無(wú)單位的整數(shù)值,可為負(fù)數(shù)。 z-index 值較大的元素將疊加在z-index值較小的元素之上。對(duì)2009-05-29
CSS教程:元素層疊級(jí)別及z-index-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
原文:http://rong179.blogbus.com/logs/24966909.html 聲明 定位元素:position屬性值設(shè)置除默認(rèn)值static以外的元素,包括relative,absolute,fixed。 平臺(tái):win/I2008-10-17- 設(shè)置z-index時(shí)必須要固定位置,這樣設(shè)置它的值時(shí)才能奏效(例如 position:absolute;)下面是示例代碼,在ff3.5.5和ie5.5~ie8.0RC1中通過(guò),大家可以嘗試著不固定其位置試試2009-11-26
CSS教程:網(wǎng)頁(yè)布局定位及z-index解釋-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
聲明 定位元素: position屬性值設(shè)置除默認(rèn)值static以外的元素,包括relative,absolute,fixed。 平臺(tái):win/IE win/FF z-index 用來(lái)確定定位元素在垂直于顯示屏2008-10-17一個(gè)關(guān)于CSS Z-index 的東東,解決了我很多疑問(wèn)
發(fā)現(xiàn)有時(shí)候真得多看看書(shū),以前一直納悶為什么有時(shí)候可以,有時(shí)候不可以,原來(lái)是這個(gè)原因.2011-03-23- 寫了個(gè)最簡(jiǎn)單的DEMO,演示了3個(gè)DIV互相遮蓋的情況。記?。簔-index要配合position屬性才有效2012-02-25
ie下的css層疊z-index各種問(wèn)題詳細(xì)整理
可是真有些日子沒(méi)有寫DIV+CSS了,而且對(duì)IE6兼容性的坑碰到的還是不夠多(以前做國(guó)外項(xiàng)目),所以這次開(kāi)發(fā)中不可避免的碰見(jiàn)了幾個(gè)問(wèn)題,尤其是在IE下的 z-index 問(wèn)題很有意思2013-01-09CSS元素的層疊與z-index設(shè)置-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
我們?cè)谖恼碌母轮?,特別注重對(duì)新手的輔導(dǎo),但webjx.com面對(duì)的是廣大的開(kāi)發(fā)人員,大家可能會(huì)遇到各種各樣的問(wèn)題,有些問(wèn)題很不常見(jiàn),或者應(yīng)用的很少,但我們依然有必2008-10-17- 在這篇文章里,我們會(huì)準(zhǔn)確的說(shuō)明究竟什么是Z-index,它為什么會(huì)這么不為人所了解,并一起討論一些關(guān)于它的實(shí)際使用中的問(wèn)題。我們同時(shí)會(huì)描述一些會(huì)遇到的瀏覽器間的差異,2014-10-22