CSS!important不会覆盖外部样式表中的样式

Don*_*n P 14 css

在样式表中,我有这个:

body {
  color: white !important;
}
Run Code Online (Sandbox Code Playgroud)

请注意它对本页右侧的文本不起作用:

https://www.graf.ly/graph_templates/56/

您可以检查文本,并查看该样式是否已应用,但随后被覆盖.这怎么可能?

我认为!重要的是忽略CSS特异性,并作为指令始终使用该样式.我以前从未见过这种行为.

注意:

不要被图形轴的白色文本所迷惑,这是一个textsvg元素并且被着色fill: white !important.

另外,我很清楚正确使用!important.所以请不要评论或回答说"你永远不应该使用!重要".那不是问题:)

use*_*437 22

这与CSS特异性无关!important.你在main.css中有一条规则说:

#legend .label {
  color: black;
}
Run Code Online (Sandbox Code Playgroud)

选择器.label直接瞄准元素并为它们提供颜色,这可以防止它们从主体或其他祖先继承颜色.一个!important属性仅适用于这是有针对性的元素; 它不会强制其他元素继承该属性.换句话说,指定的规则始终优先于继承的规则,即使该继承的规则是!important.

看规范:

用户代理必须首先根据以下机制为每个属性分配指定的值(按优先顺序排列):

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

- http://www.w3.org/TR/CSS21/cascade.html#specified-value