2012-11-16 67 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