我知道你可以把条件语句加载不同的CSS文件,如果你在Internet Explorer中,但你可以在CSS文件中做到这一点?有什么办法可以在CSS文件中做“如果IE”?
我有一种情况,我希望右边距为20,如果是Internet Explorer,但是如果是任何其他浏览器,则为10。
我知道你可以把条件语句加载不同的CSS文件,如果你在Internet Explorer中,但你可以在CSS文件中做到这一点?有什么办法可以在CSS文件中做“如果IE”?
我有一种情况,我希望右边距为20,如果是Internet Explorer,但是如果是任何其他浏览器,则为10。
处理这种情况的最简单方法是在HTML中将div放在页面其余部分的某个特定ID上。
<!--[If IE 8]>
<div id="IE8">
<![endif]-->
.
.
.
<!--[If IE 8]>
</div>
<![endif]-->
然后,你的CSS可以这样做:
#IE8 div.whatever { ... }
这类品牌的所有CSS黑客不必要的。
我喜欢这种方法。它真的很干净。 +1 – BoltClock 2010-12-12 16:11:04
太棒了!很好的例子.... – 2010-12-12 16:22:45
除了添加一个额外的元素。最好你应该像HTML样板一样做,采取一个现有的元素,如果它是IE添加一个“IE”类。 http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ – 2010-12-12 16:24:30
CSS没有官方的条件注释语法。只有条件的HTML和JavaScript评论,所以与这些创意(John Fisher显示一种方式)。
你可以通过使用非常有名的CSS黑客模拟条件CSS,但我宁愿不。他们可能会在任意版本的IE中意外中断或以其他方式工作,因为黑客意图利用IE处理CSS中的错误。
存在像this one这样的黑客,其中使用IE无法解释的规则意味着IE停止处理规则,使其可以安全地用于其他浏览器。
像这样:
div.iehack {
margin-right:20px;
voice-family: "\"}\"";
voice-family:inherit;
margin-right:10px;
}
你会让你的CSS文件做这几样黑客的一个烂摊子。最好为IE创建一个单独的文件。在您的一般css文件中将边距设置为10,并将其设置为20在您的IE特定文件中,这应该(有条件地)加载到您的常规css文件之后。你知道如何做到这一点,并没有任何理由以任何其他方式去做。
也许这是以某种方式可以通过滥用IE#表达式语法? – thejh 2010-12-12 16:06:34