【问题标题】:Conditional CSS file doesn't override regular CSS条件 CSS 文件不会覆盖常规 CSS
【发布时间】:2010-05-28 05:46:45
【问题描述】:

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

(我正在努力使这项工作适用于 IE7)。

救命!

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

【问题讨论】:

  • 你能发布一个url和元素样式的例子吗?
  • 嗯...显然 !important 并不总是适用于 IE...

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


【解决方案1】:

给定多个样式表(即使有些样式表在其他浏览器中被条件 cmets 隐藏),那么the cascade 的正常规则将适用。

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

【讨论】:

  • 不应该 !important 覆盖级联吗?
  • 它是级联的一部分(无论如何它很少是解决问题的最佳方法)
【解决方案2】:

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

#sidebar #nav li a { }

而不是...

#nav li a { }

li a { }

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 你能发布一个代码示例吗?常规的和 IE 都覆盖。如果在 IE 样式表中添加一个类时它可以工作,那么它的特异性听起来有问题。
          猜你喜欢
          • 1970-01-01
          • 2015-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-30
          • 2019-08-17
          • 2021-12-06
          相关资源
          最近更新 更多