!important在ie7.0的hack方法_CSS/HTML

來源:互聯網
上載者:User
由於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的樣式:

some text here

在body表現這裡加入lang屬性,中文為zh:



現在對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這辦法,在今後的一段時間內都會有用 。
  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.