IE6下z-index經(jīng)常不起作用bug的細(xì)分析
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
這是一個(gè)在鑫空間里轉(zhuǎn)過(guò)來(lái)一篇文章,作者寫的很詳細(xì),很給力,不感獨(dú)享。 一、匆匆?guī)н^(guò)的概念 在photoshop中,層的高低就是靠手動(dòng)調(diào)的,鼠標(biāo)拖拽,或是ctrl+]或是ctrl+shift+[快捷鍵改變層的次序。如下圖,鼠標(biāo)拖移改變層次序的過(guò)程中: 在CSS中,顯然,只能通過(guò)代碼改變層級(jí),這個(gè)屬性就是z-index,要讓z-index起作用有個(gè)小小前提,就是元素的position屬性要是relative,absolute或是fixed。就像生孩子一樣,一個(gè)人不頂用,需要配合。下為z-index的業(yè)余示意圖: 按照正常的思維,z-index層級(jí)越高,內(nèi)容越應(yīng)該在上面顯示。在大部分的瀏覽器在大部分的情況下,確實(shí)如此,但是不絕對(duì)。尤其遇到IE6,這家伙,估計(jì)是后媽帶大的,從小營(yíng)養(yǎng)不良,結(jié)果后來(lái)健康問(wèn)題一堆又一堆。z-index的問(wèn)題就是其中之一,而本文就是要講講這個(gè)IE6下z-index不起作用的問(wèn)題。 二、關(guān)于效果截圖的些必要說(shuō)明 以下所有結(jié)果截圖的大背景如下: 作用是為了讓層級(jí)關(guān)系一目了然。看:
2、頁(yè)面上做對(duì)比的是美女圖片,圖片在半透明黑色絕對(duì)定位層的上面還是下面很容易辨別,這樣,您就能夠?qū)ξ宜f(shuō)的z-index不起作用有很直觀的認(rèn)識(shí)了。 三、IE6的抱怨:浮動(dòng)讓我沉淪 <div id=”blank”></div> 這一對(duì)比就知道問(wèn)題了,可能有人會(huì)疑問(wèn),這會(huì)不會(huì)是IE6的relative自己感冒了,而不是浮動(dòng)(float)攜帶了“甲流病毒”。好,我現(xiàn)在去掉浮動(dòng),HTML代碼如下: 您可以狠狠地點(diǎn)擊這里:在線demo測(cè)試 我想,問(wèn)題應(yīng)該都清楚了,至于原因,我起初以為是haslayout搞的鬼,后來(lái),用zoom一測(cè)試,發(fā)現(xiàn)不是(IE7下無(wú)此bug也證明不是haslayout的原因),似乎就是這個(gè)float會(huì)讓z-index失效。由于將外部div的position:relative屬性改為absolute可以解決這一問(wèn)題,我就懷疑是不是浮動(dòng)讓relative發(fā)生了些變化,float與relative在水平定位上可以說(shuō)是近親,會(huì)不會(huì)是因?yàn)檫@兩者攪和在一起所以什么“畸形”“體弱多病”就出現(xiàn)了。這僅是我的猜測(cè)而已,真正的原因還是去問(wèn)IE6的后媽吧。 解決方法,解決方法有三,1、position:relative改為position:absolute;2、去除浮動(dòng);3、浮動(dòng)元素添加position屬性(如relative,absolute等)。 四、固執(zhí)的IE6:它只認(rèn)第一個(gè)爸爸 有一定經(jīng)驗(yàn)的人可能都知道上面的事實(shí)。但是,相信這里面很多人不知道IE6下,決定層級(jí)高低的不是當(dāng)前的父標(biāo)簽,而是整個(gè)DOM tree(節(jié)點(diǎn)樹(shù))的第一個(gè)relative屬性的父標(biāo)簽。有時(shí)平時(shí)我們多處理一個(gè)父標(biāo)簽,z-index層級(jí)多而復(fù)雜的情況不多見(jiàn),所以難免會(huì)有認(rèn)識(shí)上的小小偏差。 好,下面展示這個(gè)bug。 條件很簡(jiǎn)單,只要絕對(duì)定位的第一個(gè)元素的第一個(gè)爸爸,或者說(shuō)是最老的那個(gè)爸爸級(jí)別的人的relative屬性小于黑色半透明層的z-index層級(jí)。例如下面的HTML代碼: 再看看以Firefox為代表的其他童鞋: IE7與IE6有著同樣的bug,原因很簡(jiǎn)單,雖然圖片所在div當(dāng)前的老爸層級(jí)很高(1000),但是由于老爸的老爸不頂用,可憐了9999如此強(qiáng)勢(shì)的孩子沒(méi)有出頭之日啊! 知道原因解決就很輕松了,給第一任老爸添加z-index后的HTML代碼如下: 您可以狠狠地點(diǎn)擊這里:改變父標(biāo)簽層級(jí)在線demo測(cè)試 五、必要的結(jié)語(yǔ) 總之,慢慢來(lái),慢慢積累,慢慢研究,一定會(huì)一步一步揭開(kāi)z-index的本質(zhì)面紗的。 原創(chuàng)地址:http://www.zhangxinxu.com/wordpress/?p=471 該文章在 2010/12/17 22:09:18 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |