由於ie對!important識別存在bug,而現在大部分網頁標準設計師又通過這個bug來兼容ie和ff,但是ie7.0把這個bug給修復了,所以問題又出現了,怎麼兼容ie.7.0的同時又能相容ie6.0和ff?正所謂"上有政策,下有對策",國外的網頁標準設計師透過使用css filter的辦法(並不是css hack)來相容ie7.0,ie6.0和ff,以下為我從國外網站的翻譯.
新建一個css樣式如下:
#item {
width: 200px;
height: 200px; : red;
}
新建一個div,並使用前面定義的css的樣式:
some text here
some text here
在表現
現在對div元素再定義一個樣式:
*:lang(en) #item{
background:green !important;
}
這樣做是為了用!important覆蓋原來的css樣式,由於:lang選擇器ie7.0並不支持,所以對這句話不會有任何作用,於是也達到了ie6.0下同樣的效果,但是很不幸地的是,safari同樣不支持此屬性,所以需要加入以下css樣式:
#item:empty {
background: green !important
}
:empty選擇器為css3的規範,儘管safari並不支持此規範,但是還是會選擇此元素,不管是否此元素存在,現在綠色會現在在ie各版本以外的瀏覽器上,並在以下瀏覽器和作業系統下通過測試:
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 1.7.12/win & linux
safari 1.7.12/win & linux
safari 1.7.12/win & linux
safari 1.7.12/win & linux
safari 2/mac> >epiphany 1.4.8/linux
galeon 1.3.20/linux 依照遠作者的說法其實這不能算是一種hack,應該屬於filter,不過這似乎並不是最重要的,因為透過這個辦法,我們又一次了解決IE6.0,IE7.0和其他瀏覽器之間的兼容性問題,而且使用:lang-filter這辦法,在今後的一段時間內都會有用 。