CSS选择器button:not(#mainBtn, .cta)特异性计算为何是1-0-1?
这里的核心规则是**:not()伪类的参数里如果包含多个选择器,只会取其中特异性最高的那个来贡献,而非把所有参数的特异性累加**。
咱们拆解这个选择器的计算逻辑:
button是元素选择器,特异性为 0-0-1:not()本身不增加特异性,但它的参数里有两个选择器:#mainBtn(ID选择器,特异性1-0-0)和.cta(类选择器,特异性0-1-0)。按照规则,这里只取两个参数里特异性最高的那个——也就是#mainBtn的1-0-0。- 将两部分特异性相加:0-0-1 + 1-0-0 = 1-0-1,这就是文档给出结果的原因。
你之前误以为要把.cta的类选择器特异性也叠加进去,但实际上:not()的多参数是“或”的匹配逻辑,它只会用参数里特异性最高的那个来计算整体选择器的特异性,而非叠加所有参数的数值。
内容的提问来源于stack exchange,提问作者user9026
相关产品推荐
相关产品推荐

