英文原文地址: http://www.ibloomstudios.com/article7/
由于ie對!important識別存在bug,而現(xiàn)在大部分網(wǎng)頁標準設(shè)計師又通過這個bug來兼容ie和ff,但是ie7.0把這個bug給修復(fù)了,所以問題又出現(xiàn)了,怎么兼容ie.7.0的同時又能兼容ie6.0和ff?正所謂"上有政策,下有對策",國外的網(wǎng)頁標準設(shè)計師通過使用css filter的辦法(并不是css hack)來兼容ie7.0,ie6.0和ff,以下為我從國外網(wǎng)站的翻譯.
新建一個css樣式如下:
#item { width: 200px; height: 200px; background: red; }
新建一個div,并使用前面定義的css的樣式:
<div id="item">some text here</div>
在body表現(xiàn)這里加入lang屬性,中文為zh:
<body lang="en">
現(xiàn)在對div元素再定義一個樣式:
*:lang(en) #item{ background:green !important; }
這樣做是為了用!important覆蓋原來的css樣式,由于:lang選擇器ie7.0并不支持,所以對這句話不會有任何作用,于是也達到了ie6.0下同樣的效果,但是很不幸地的是,safari同樣不支持此屬性,所以需要加入以下css樣式:
#item:empty { background: green !important }
:empty選擇器為css3的規(guī)范,盡管safari并不支持此規(guī)范,但是還是會選擇此元素,不管是否此元素存在,現(xiàn)在綠色會現(xiàn)在在除ie各版本以外的瀏覽器上,并在以下瀏覽器和操作系統(tǒng)下通過測試:
ie7 beta 2 preview/win ie5.01+/win firefox 1.5/win opera 8.5/win & linux netscape 7.01, 8/win mozilla 1.7.12/win & linux safari 2/mac firefox 1.0.4/linux epiphany 1.4.8/linux galeon 1.3.20/linux
按照遠作者的說法其實這不能算是一種hack,應(yīng)該屬于filter,不過這似乎并不是最重要的,因為通過這個辦法,我們又一次了解決IE6.0,IE7.0和其他瀏覽器之間的兼容性問題,而且使用:lang-filter這辦法,在今后的一段時間內(nèi)都會有用
出處:藍色理想
責任編輯:moby
◎進入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|