当前位置: 首页 > 知识库问答 >
问题:

了解CSS选择器的优先级/特异性

黄磊
2023-03-14

我想了解CSS选择器是如何处理属性冲突的。如何选择一个属性而不是另一个属性?

null

div {
  background-color: red;
}

div.my_class {
  background-color: black;
}

div#my_id {
  background-color: blue;
}

body div {
  background-color: green;
}

body>div {
  background-color: orange;
}

body>div#my_id {
  background-color: pink;
}
<div id="my_id" class="my_class">hello</div>

null

选择器优先级是如何工作的?

共有1个答案

施英哲
2023-03-14

我只需要加入一个CSS 2.1规范本身的链接,以及浏览器应该如何计算特定性:

CSS 2.1第6.4.3节:

选择器的特异性计算如下:

  • 如果声明来自“style”属性而不是带有选择器的规则,则计数1,否则为0(=a)(在HTML中,元素的“style”属性的值是样式表规则。这些规则没有选择器,因此a=1、b=0、c=0和d=0。)
  • 计算选择器中ID属性的数量(=b)
  • 计算选择器中其他属性和伪类的数量(=c)
  • 计算选择器中元素名称和伪元素的数量(=d)
  • 特异性仅基于选择器的形式。特别地,形式为“[id=P33]”的选择器被计为属性选择器(a=0,b=0,c=1,d=0),即使id属性在源文档的DTD中被定义为“id”。

把a-b-c-d四个数字(在一个大基数的数字系统中)串联起来就给出了特异性。

如果特性相等,则CSS 2.1第6.4.1节开始起作用:

注意,这是在讨论样式定义时的问题,而不是在使用时的问题。如果类.a.b具有相同的专用性,则以样式表中最后定义的为准。

...

...

将根据 .a.b的定义顺序使用相同的样式。
 类似资料:
  • 问题内容: 我想了解CSS选择器如何处理属性冲突。如何选择一项财产而不是另一项财产? 选择器优先级如何工作? 问题答案: 我将仅介绍CSS 2.1规范本身的链接,以及浏览器 应 如何计算特异性: CSS 2.1第6.4.3节: 选择器的特异性计算如下: 如果声明的来源是’style’属性而不是带有选择器的规则,则计数为1,否则为0;否则(= a)(在HTML中,元素的“ style”属性的值是样式

  • 问题内容: CSS问题:如果两个不同的选择器应用于一个元素,谁会赢? 我知道这不应该发生,但是我想调整旧应用程序,而CSS居于中间。 问题答案: 规范中的实际上是合理可读的。综上所述: 规则和内联规则获胜。 否则,通常会赢得更具体的胜利。是比更加具体的选择器。 如果规则同样具体,则以最后宣布的为准。 没有特别的理由说明为什么这种“不应该发生”。通常先指定一个广泛适用的规则,然后添加一个更具体的规则

  • 本文向大家介绍CSS选择器有哪些,优先级呢?相关面试题,主要包含被问及CSS选择器有哪些,优先级呢?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: id 选择器,class 选择器,标签选择器,伪元素选择器,伪类选择器等 同一元素引用了多个样式时,排在后面的样式属性的优先级高; 样式选择器的类型不同时,优先级顺序为:id 选择器 > class 选择器 > 标签选择器; 标签之间存在层级包

  • 本文向大家介绍属性选择器和伪类选择器的优先级?相关面试题,主要包含被问及属性选择器和伪类选择器的优先级?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 属性选择器和伪类选择器优先级相同

  • 我的第一个想法是有两个COSUMER,每个队列一个,从每个队列获取消息并将它们放入java.util.PriorityQueue中,但我希望避免插入(和排序/阻塞/同步)的开销,因为会有大量的消息。 然后,我考虑了usign java.nio,但我想不出这是否可能。 我的想法是仍然拥有两个使用者,但现在他们将任务放在两个nio.buffer(高优先级缓冲区和低优先级缓冲区)中,这些缓冲区绑定到ni

  • 问题内容: 我的网页包含: 引用的样式表包含: 我在ID中有一张表格,希望单元格有一些填充。但是,引用的样式表优先于内联样式。我可以通过Firebug直观地看到这一点。如果我关闭Firebug中的指令,则向左填充将生效。 我该如何上班? 问题答案: 正如其他人提到的那样,您有一个特异性问题。当确定两个规则中的哪一个优先时,CSS引擎会计算每个选择器中的s 数量。如果一个比另一个多,就使用它。否则,