我正在学习CSS选择器的特殊性,并且遇到了以下示例。我无法弄明白,哪个CSS选择器对另一个选择器具有更高的特异性?
1。例如:
p#largetext
body p#largetex
2。例如:
p.largetext ul li
p ul li a
CSS的特异性如何相互作用?为什么一个更高,一个更低?
答案 0 :(得分:5)
CSS3 selectors, W3C Recommendation:
回答了您的问题<强> 9。计算选择器的特异性
选择器的特异性计算如下:
- 计算选择器中的ID选择器数量(= a)
- 计算选择器中的类选择器,属性选择器和伪类的数量(= b)
- 计算选择器中的类型选择器和伪元素的数量(= c)
- 忽略通用选择器
否定伪类中的选择器与其他选择器一样, 但否定本身并不算作伪阶级。
连接三个数字a-b-c(在具有大数字的数字系统中) base)给出了特异性。
通过您的示例,我们有:
1) p#largetext
的特异性为1,0,1(1个ID,1个类型)
body p#largetex
的特异性为1,0,2(1个id,2个类型)
2) p.largetext ul li
的特异性为0,1,3(1类,3种类型)
p ul li a
的特异性为0,0,4(4种类型)
要获得连接3个数字的特异性值。因此,对于示例1,第二选择器更具体102> 101并且例如2,第一选择器更具体13> 4。
答案 1 :(得分:1)
在您的第一个示例中,第二行优先于第一行,因为它更具体。你的第二个例子实际上是针对两个不同的元素,所以根据你想要的东西,它会做两件事。如果两个规则共享相同的优先级,那么它将取决于规则本身的顺序。
您可以在MDN上查看完整细分:Specificity - CSS | MDN
答案 2 :(得分:1)
特异性是基于选择器计算的权重。以下是更具体到不太具体的元素的列表。
如果两个选择器的特异性相同,则将应用latets规则。