CSS 选择器特异性是什么?它是如何工作的?
浏览器根据 CSS 规则的特异性来决定在元素上显示哪些样式。我们假设浏览器已经确定了与特定元素匹配的规则。在匹配的规则中,根据以下各项为每个规则计算特异性,即四个逗号分隔的值:a, b, c, d
:
a
表示是否使用行内样式。如果属性声明是元素上的行内样式,则a
为 1,否则为 0。b
是 ID 选择器的数量。c
是类、属性和伪类选择器的数量。d
是标签和伪元素选择器的数量。
结果特异性不是一个分数,而是一个值矩阵,可以按列进行比较。在比较选择器以确定哪个具有最高特异性时,从左到右查看,并比较每列中的最高值。因此,列 b
中的值将覆盖列 c
和 d
中的值,无论它们可能是什么。因此,特异性 0,1,0,0
将大于 0,0,10,10
。
在特异性相等的情况下:以最新规则为准。如果您在样式表中(无论是内部还是外部)编写了两次相同的规则,那么样式表中靠下的规则更接近要设置样式的元素,它被认为更具特异性,因此将被应用。
我会编写低特异性的 CSS 规则,以便在必要时可以轻松覆盖它们。在编写 CSS UI 组件库代码时,它们具有低特异性很重要,这样库的用户就可以覆盖它们,而无需使用过于复杂的 CSS 规则来增加特异性或求助于 !important
。