雖然我也很想IE6早點(diǎn)死,但個(gè)人的主觀能動(dòng)性畢竟太有限了,我們唯一能做的是用一些手段減輕IE6帶來(lái)的痛苦。
1、使用文檔類型
盡量使用最嚴(yán)格的文檔類型,確保你的頁(yè)面運(yùn)行于標(biāo)準(zhǔn)模式下。雖然用了它們,你可能不能用許多標(biāo)簽,如b,s,font等,但它們都可以用CSS來(lái)代替。
1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2."http://www.w3.org/TR/html4/strict.dtd">
或者最簡(jiǎn)單的<!doctype html">,這是HTML5唯一認(rèn)可的文檔類型,瀏覽器會(huì)自動(dòng)轉(zhuǎn)換為上面那個(gè)。也不要用xhtml的文檔聲明了,它原本想搞到html成為過(guò)渡的產(chǎn)品,殊不知自己才是匆匆的過(guò)客。而且用了它,元素的nodeName可能會(huì)區(qū)分大小寫,非常麻煩。
2、使用position: relative
在布局中,永遠(yuǎn)是先考慮定位布局然后才到浮動(dòng)布局。IE的浮動(dòng)模型令人狂抓。
3、使用display:inline
如果你一定要使用浮動(dòng),那請(qǐng)?jiān)诤竺娓odisplay:inline。因?yàn)镮E6存在一個(gè)很容易發(fā)生的bug。只要對(duì)塊狀容器元素設(shè)置了float和與float相同方向的margin值就會(huì)出現(xiàn)。如我們給div元素設(shè)置了float:left 和 margin-left:100px ,在IE6中就會(huì)變成margin-left:200px。
4、請(qǐng)不要使用注釋節(jié)點(diǎn)
這里涉及兩個(gè)可惡性的東西。一個(gè)是多余字符bug,可以參考本博客園的楊正祎(阿一)大大的這篇文章《歌劇院魅影bug 》 。第二個(gè)是IE全系列的查找API的bug,document.all,document.getElementsByTagName與document.querySelectorAll都有可能返回注釋節(jié)點(diǎn)。
5、懸浮效果記得使用帶有href屬性的a元素套嵌
在IE:hover只對(duì)a標(biāo)簽有效,而且這標(biāo)簽一定顯式設(shè)置了href屬性。
6、樣式設(shè)置中不要使用百分比
IE在計(jì)算百分比時(shí)存在問(wèn)題。
7、讓元素獲取hasLayout
詳情請(qǐng)自行g(shù)oogle百度這一篇偉大的學(xué)術(shù)研究《On having layout》。我們可以用el.currentStyle.hasLayout來(lái)檢測(cè)它是否獲得layout,一個(gè)獲得layout的萬(wàn)能方法是zoom:1。
8、嚴(yán)格遵守(x)html的套嵌規(guī)則
套嵌規(guī)則是定義在文檔類型中,文檔是按照它來(lái)解析的,雖然現(xiàn)在的瀏覽器都很醒目,但為了防止它們發(fā)神經(jīng),還是小心為妙。另,雖然對(duì)于某些元素會(huì)自動(dòng)閉合,我們還是自己閉合吧,養(yǎng)成個(gè)好習(xí)慣是非常重要的。
9、提高你的javascrip水平
IE6許多東西都不支持或支持不好,但我們幾乎都可以用javascript來(lái)模擬,如各種關(guān)系偽類,子元素過(guò)濾偽類,屬性偽類,目標(biāo)偽類, min-width與max-width,PNG的透明問(wèn)題……
10、多來(lái)我的博客摸魚(yú)
湊個(gè)整數(shù)討個(gè)吉利。如發(fā)現(xiàn)什么好東西或bug我會(huì)第一時(shí)間報(bào)道給你們滴~~~^_^