2010-12-12 75 views
8

我知道你可以把条件语句加载不同的CSS文件,如果你在Internet Explorer中,但你可以在CSS文件中做到这一点?有什么办法可以在CSS文件中做“如果IE”?

我有一种情况,我希望右边距为20,如果是Internet Explorer,但是如果是任何其他浏览器,则为10。

+0

也许这是以某种方式可以通过滥用IE#表达式语法? – thejh 2010-12-12 16:06:34

回答

14

处理这种情况的最简单方法是在HTML中将div放在页面其余部分的某个特定ID上。

<!--[If IE 8]> 
<div id="IE8"> 
<![endif]--> 
    . 
    . 
    . 
<!--[If IE 8]> 
</div> 
<![endif]--> 

然后,你的CSS可以这样做:

#IE8 div.whatever { ... } 

这类品牌的所有CSS黑客不必要的。

+0

我喜欢这种方法。它真的很干净。 +1 – BoltClock 2010-12-12 16:11:04

+0

太棒了!很好的例子.... – 2010-12-12 16:22:45

+1

除了添加一个额外的元素。最好你应该像HTML样板一样做,采取一个现有的元素,如果它是IE添加一个“IE”类。 http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ – 2010-12-12 16:24:30

2

CSS没有官方的条件注释语法。只有条件的HTML和JavaScript评论,所以与这些创意(John Fisher显示一种方式)。

你可以通过使用非常有名的CSS黑客模拟条件CSS,但我宁愿不。他们可能会在任意版本的IE中意外中断或以其他方式工作,因为黑客意图利用IE处理CSS中的错误。

2

存在像this one这样的黑客,其中使用IE无法解释的规则意味着IE停止处理规则,使其可以安全地用于其他浏览器。

像这样:

div.iehack { 
    margin-right:20px; 
    voice-family: "\"}\""; 
    voice-family:inherit; 
    margin-right:10px; 
} 
0

你会让你的CSS文件做这几样黑客的一个烂摊子。最好为IE创建一个单独的文件。在您的一般css文件中将边距设置为10,并将其设置为20在您的IE特定文件中,这应该(有条件地)加载到您的常规css文件之后。你知道如何做到这一点,并没有任何理由以任何其他方式去做。

相关问题