1

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

(我正在尝试使这项工作适用于 IE7)。

帮助!

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

4

6 回答 6

6

给定多个样式表(即使有些样式表通过条件注释对其他浏览器隐藏),然后级联的正常规则将适用。

确保您的选择器是适当具体的,并且您以正确的顺序应用样式表。

于 2010-05-27T19:30:36.800 回答
3

如果您在两个样式表中使用相同的选择器,那么只要将条件 IE 样式表放在常规样式表之后就可以了。如果您这样做并且您的 IE 工作表没有占用,那么您可能需要编写更具体的选择器。

#sidebar #nav li a { }

代替...

#nav li a { }

或者

li a { }
于 2010-05-27T21:17:51.400 回答
1

不要忘记您也可以使用该!important规则来覆盖 CSS 定义。这是关于该规则的 W3C 文档。

于 2010-05-27T19:37:09.517 回答
1

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

于 2010-05-27T19:55:52.850 回答
0

根据我自己对类似问题的经验,我猜想在您的 IEonly.css 文件中的某处潜伏着一些错误或缺失的字符。追踪它们可能真的很痛苦,所以请执行以下操作:

  1. 暂时从 IEonly.css 中删除所有 CSS,除了用于覆盖普通 CSS 的部分。测试看看这是否有效。如果是这样,请继续将代码粘贴回文件中,按照您认为合适的部分。希望你能找到问题所在。
  2. 如果在文件中仅存在该部分代码时您的覆盖不起作用,请确保您拥有正确的选择器并且特异性正常。

您也可以尝试阅读http://www.w3.org/TR/CSS2/cascade.html#important-rules了解更多信息。

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

于 2010-05-27T21:46:45.953 回答
-1

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

于 2010-05-27T19:56:44.830 回答