有什么办法吗;如果;在CSS文件中?

有什么办法吗;如果;在CSS文件中?,css,internet-explorer,conditional-comments,Css,Internet Explorer,Conditional Comments,我知道如果你在InternetExplorer中,你可以使用条件语句来加载不同的CSS文件,但是你能在CSS文件中这样做吗 如果是Internet Explorer,我希望右边距为20;如果是其他浏览器,则右边距为10。最简单的处理方法是在HTML中的条件下,在页面的其余部分放置一个带有特定id的div <!--[If IE 8]> <div id="IE8"> <![endif]--> . . . <!--[If IE 8]> <

我知道如果你在InternetExplorer中,你可以使用条件语句来加载不同的CSS文件,但是你能在CSS文件中这样做吗


如果是Internet Explorer,我希望右边距为20;如果是其他浏览器,则右边距为10。

最简单的处理方法是在HTML中的条件下,在页面的其余部分放置一个带有特定id的div

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

这使得所有这些CSS攻击都变得不必要。

CSS没有官方的条件注释语法。这里只有条件HTML和JavaScript注释,所以要创造性地使用它们(显示一种方式)

您可以使用非常著名的CSS黑客来模拟条件CSS,但我不希望这样。它们可能会在任意版本的IE上崩溃或以其他方式意外工作,因为黑客攻击的目的是利用IE处理CSS中的漏洞。

有一些黑客攻击,比如使用IE无法解释的规则意味着IE停止处理某个规则,从而使它可以安全地用于其他浏览器

像这样:

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

这样做会把css文件弄得一团糟。最好为IE创建一个单独的文件。在常规css文件中将边距设置为10,在IE特定文件中将边距设置为20,该文件应(有条件地)在常规css文件之后加载。你知道如何做到这一点,几乎没有理由用其他方法来做。

也许这是因为误用了IEs表达式语法才可行?我喜欢这种方法。它真的很干净+1添加额外元素除外。最好像HTML样板一样,获取一个现有元素,如果它是IE,则向它添加一个“IE”类。这是一个很好的技巧,但当你想为不同的IE版本(如IE6和IE7)构建异常时,它可能会让你的HTML有点混乱。@GolezTrol:你可以从服务器或javascript执行有条件的工作,如果你想保持整洁的话。我试图绕过某些CSS属性,这些属性在IE上不起作用,但在使用上遇到了问题。发现我在IE11中测试,IE10之后不支持条件语句…我讨厌IE
div.iehack { 
  margin-right:20px; 
  voice-family: "\"}\""; 
  voice-family:inherit;
  margin-right:10px; 
}