!important在ie7.0的hack方法

英文原文地址: http://www.ibloomstudios.com/article7/

由於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;
    background: red;
}

新建一個div,並使用前面定義的css的樣式:

<div id="item">some text here</div>

在body表現這裏加入lang屬性,中文爲zh:

<body lang="en">

現在對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 2/mac
firefox 1.0.4/linux
epiphany 1.4.8/linux
galeon 1.3.20/linux

按照遠作者的說法其實這不能算是一種hack,應該屬於filter,不過這似乎並不是最重要的,因爲通過這個辦法,我們又一次瞭解決IE6.0,IE7.0和其他瀏覽器之間的兼容性問題,而且使用:lang-filter這辦法,在今後的一段時間內都會有用

發佈了38 篇原創文章 · 獲贊 1 · 訪問量 3155
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章