条件CSS文件不会覆盖常规CSS

时间:2010-05-27 19:28:58

标签: css internet-explorer internet-explorer-7 conditional-comments

如果IE版本小于8,我使用条件注释链接到css文件(让我们称之为“IEonly.css”)。我试图覆盖常规css文件中的一些属性。奇怪的是,IEonly.css将正确设置新的css属性,但它不会覆盖常规CSS文件中的属性!

(我正在尝试为IE7做这项工作)。

帮助!

编辑:我在css样式之后添加了一个!important,看它是否会有所帮助。它没有。

6 个答案:

答案 0 :(得分:6)

给定多个样式表(即使某些样式表与其他具有条件注释的浏览器隐藏),则the cascade的常规规则将适用。

确保您的选择器具有适当的特定性,并且您按正确的顺序应用样式表。

答案 1 :(得分:3)

如果在两个样式表中使用相同的选择器,那么只要将条件IE样式表放在常规样式表之后就应该没问题。如果你这样做并且你的IE表没有服用那么你可能需要编写更具体的选择器。

#sidebar #nav li a { }

而不是......

#nav li a { }

li a { }

答案 2 :(得分:1)

不要忘记您还可以使用!important规则覆盖CSS定义。关于该规则的Here is the W3C documentation

答案 3 :(得分:1)

也许您可以将样式表重新组织为默认的IE样式,并使用if !IE条件作为“良好的浏览器”覆盖。

答案 4 :(得分:0)

根据我自己对类似问题的经验,我猜你的IEonly.css文件中某处隐藏着一些不好或遗漏的字符。追踪它们可能是一种真正的痛苦,所以请执行以下操作:

  1. 暂时从IEonly.css中删除所有CSS,但用于覆盖普通CSS的部分除外。测试看看是否有效。如果是,请继续将代码粘贴回文件中,并按照您认为合适的方式分段。希望你会发现问题。
  2. 如果在文件中只存在该部分代码时覆盖不起作用,请确保您具有正确的选择器并且特异性正常。
  3. 您还可以尝试阅读http://www.w3.org/TR/CSS2/cascade.html#important-rules以获取更多信息。

    您可以发布一些代码供我们查看吗?那会有所帮助。

答案 5 :(得分:-1)

我在元素中添加了一个类,并在IEonly样式表中使用类选择器和常规样式表引用它。这导致IEonly样式声明覆盖常规声明。