什么时候CSS的!重要声明不起作用?

Mat*_*ell 24 css

我想知道是否有人可以提供一些权威的参考摘要,说明CSS中的!important声明何时无法覆盖内联样式.

kep*_*aro 16

确定哪些样式相互覆盖涉及许多因素.样式声明的下方出现在级联中,并且在定位元素时越具体,它对其他样式的权重就越大.

这是样式继承的CSS2标准:

  1. 如果级联产生值,请使用它.
  2. 否则,如果继承该属性,请使用父元素的值,通常是计算值.
  3. 否则使用属性的初始值.每个属性的初始值在属性的定义中指示.

在内部,浏览器将根据标准计算规则的特异性.!important声明将增加规则的权重,但动态分配样式属性通常优先,因为它通常具有更高的指定性.


Mat*_*ell 12

到目前为止,研究似乎表明:

  • IE7支持!重要.
  • FireFox 2和3支持!重要.
  • IE6支持!在标准兼容模式下很重要.

但是,IE6(可能是IE7)不支持!在这种情况下很重要:

someselector {
  property: value !important;
  same-property: another-value;
}
Run Code Online (Sandbox Code Playgroud)

它将使用第二个值(最后列出的值).

这个页面证实了这一点:

在Internet Explorer 6及更早版本中,如果重要声明出现在同一声明块中同一属性的正常声明之前,则正常声明将覆盖重要声明.

当使用非法标识符代替关键字important时,Internet Explorer 6和7重视声明,而不是忽略声明.

Gizmo的评论指出Safari和Opera支持!重要.