我最初在SVG文件中使用CSS时注意到了这个问题,并认为它是渲染错误,但在HTML中尝试它之后,发生了相同的情况。CSS属性选择器优先于普通的CSS类选择器
采取以下代码:
.example {color:green}
.example {color:blue}
在这种情况下,作为使用正常类选择预期的color
的值最初,虽然后来在该文件中被重新定义为blue
,从而所产生的颜色在课堂上的元素是蓝色的。
现在借此例如:
div[class='example'] {color:green}
.example {color:blue}
在这种情况下,现在开始使用的属性选择限定example
为div的颜色值,当该值是使用正常CSS类选择重新定义的,从绿色变化到蓝色在div中被忽略,并且由属性选择器设置的值优先,尽管整个类的蓝色值在稍后在文件中重新声明。
根据Mozilla有关CSS class selectors的文档,它说正常的选择器和属性选择器是“等效的”,尽管在这种情况下似乎不是这种情况。这是什么原因?
你的第一个CSS规则是寻找*两个*条件(一个div **和**一个特定的属性),而你的第二个只寻找*一个*条件(类)。虽然它自己的属性选择器*可能是等价的,但第一个示例包含两个条件 - 因为它更具体,它会优先。 – Santi
同意。 @Santi是正确的。要有一个简单的属性选择器,您需要将样式规则更改为'[class ='example']'放弃'div'部分。 –