以下哪项在CSS中具有更高的特异性?

时间:2016-01-21 19:13:12

标签: css css3

我正在学习CSS选择器的特殊性,并且遇到了以下示例。我无法弄明白,哪个CSS选择器对另一个选择器具有更高的特异性?

1。例如:

p#largetext
body p#largetex

2。例如:

p.largetext ul li       
p ul li a

CSS的特异性如何相互作用?为什么一个更高,一个更低?

3 个答案:

答案 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)

特异性是基于选择器计算的权重。以下是更具体到不太具体的元素的列表。

  1. !重要
  2. 内联声明
  3. ID选择器
  4. 类选择器,属性选择器例如:[name =“email”]或伪clases例如:(:hover)
  5. 类型选择器例如:div,h2,img
  6. 如果两个选择器的特异性相同,则将应用latets规则。