在 CSS (层叠样式表) 中,选择器的权重由其特定性(specificity)确定。具有更高特定性的样式规则将覆盖较低特定期的规则。以下就是计算特定性的方法:
- 内联样式(Inline Styles):在 HTML 元素内部使用
style
属性定义的样式。例如<div style="color: red;">
的权重是1000
。 - ID 选择器:如
#content
(权重为0100
)。 - 类选择器、属性选择器、伪类选择器:如
.class
,[type="text"]
,:hover
(权重为0010
)。 - 元素选择器、伪元素选择器:如
div
,p
,::before
(权重为0001
)。 - 特殊选择器:
*
、+
、>
、~
这些组合选择器不增加权重。 - 对于
!important
属性权重最高,出现在样式属性值后,如color: red !important;
。
计算权重时,各类选择器的数量是独立计算的,比较权重时,会按照四个层级(四个数字)进行逐级比较,权重高的样式优先生效。例如, ID 选择器的权重更高,所以 #id p
(一个 ID 和一个元素,权重为 0101
)会覆盖 .class .class .class
(三个类,权重为 0030
)的样式。可理解各部分权重为 四个 "十进制位",高位权重大于低位。
请注意:权重只是决定 CSS 样式冲突的一个因素,还应考虑源代码的顺序和继承。