2012-11-16 124 views
6

我期待爲IE 9使用一些有條件的樣式 - 但我希望在我的主樣式表中有條件 - 不使用第二個樣式表或在HTML頁面中引用它。此刻,我把這個代碼的HTML頁面,這工作,因爲它覆蓋其他樣式的主樣式表:如何在CSS樣式表中使用條件格式?

<!--[if IE 9]> 
<style> 
nav li a:hover { 
    text-decoration: underline; 
    color: black; 
} 
nav .four a:hover{ 
    color:white; 
} 
</style> 
<![endif]--> 

但我想有在CSS表這些條件,使它的所有位於一個地方,我不必在每個頁面重複代碼。我寧願避免爲IE 9提供一個單獨的CSS - 我已經爲IE 7-8提供了一個CSS。我在樣式表試過這樣:

<!--[if IE 9]> 

nav li a:hover { 
    text-decoration: underline; 
    color: black; 
} 
nav .four a:hover{ 
    color:white; 
} 
<![endif]--> 

上面的代碼是特定於我nav bar的IE 9(它是一個爲nav bar修復,因爲IE 9不支持文字陰影)。

有沒有辦法在CSS樣式表中做到這一點?

回答

6

條件註釋只爲HTML,但你可以利用它在你的CSS。 HTML5Boilerplate通過添加類的HTML元素(https://github.com/h5bp/html5-boilerplate/blob/master/index.html)

<!DOCTYPE html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 

這給你一個鉤子,你可以使用這個不只針對IE瀏覽器:

.lt-ie8 .my-style { color: red } 
+0

謝謝,這一直奏效。將來def將更頻繁地開始使用樣板文件! –

0

這是完全不可能的。 IE中的條件塊只能用於HTML網頁。

但是,瀏覽器廠商一直對他們的css解析器(包括微軟)很有趣。所以有一些我們稱之爲css hacks的數字,它可以用來讓一些解析器解釋一些規則,但不被其他解析器解釋。

請不就是它的東西,應該儘量避免使用:樣式表將不符合W3C標準了,這絕對不是一個「乾淨」的解決方案(更像是骯髒的傳統解決方法IE6的黑暗統治期間是公地) 。

+0

我不認爲你鏈接到正確的東西... – Nathan

+0

糟糕。那麼,至少它不像[this](http://www.digipedia.pl/usenet/thread/17198/42524/)錯誤連接!謝謝 –

+0

哈哈,你好!我幾乎感覺到那個bug報告的尷尬。 – Nathan