!important 被覆盖

5
我正在使用JQuery移动版,我希望我的应用程序中的所有文本都是紫色的。我在我的CSS的body部分中添加了以下代码:color: #7A68AE !important;
然后我尝试在Firebug中进行调试,发现我的!important被覆盖了。
为什么会这样?难道!important不应该覆盖其他所有内容吗?
注意:我已经解决了问题,我只是非常好奇为什么!important没有起作用。

它与特定性有关。 - drudge
3个回答

5
请参考 specificity 规范。尽管 !important 应该具有优先级,但由于其权重较大,可能会被内联样式覆盖。
没有看到示例,我无法百分之百确定。
另请参见 !important rules

1

!important 可以覆盖相同层级的任何内容,但带有 !important 声明的用户样式表就像是不可战胜的。

完整的层级关系是:链接的样式表 < head 中嵌入的样式 < 文档中的样式块(在受影响元素之前)< 行内样式(已弃用)< 元素内样式(style="" 属性)

这就是为什么它们被称为“层叠”样式表的原因。

因此,链接的样式表带有 !important 声明,并不是那么重要。

Firebug 对于其许多工具(如突出显示 div、链接等)使用即时用户声明和 !important。

尝试在没有 Firebug 的情况下查看。如果有所改变,那就是 Firebug 转换了它。


1
这可能是由于许多原因造成的。例如:
  • 你的一个!important子句被另一个具有更具体选择器的!important子句覆盖了(编辑:在回答你的问题的其他人Brad指出了一个相关资源:www.w3.org/TR/CSS2/cascade.html#specificity),
  • 你为特定元素使用了一些内联样式,
  • 你使用JavaScript实际上向元素添加了一些内联样式,

你说你有Firebug,所以你应该能够确定是哪种情况。启用和禁用JS,查看应用于特定选择器的样式以及查看结果样式。没有代码,我们无法对此发表意见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接