CSS 选择器权重计算

1,930 阅读1分钟

优先级是如何计算的

优先级就是分配给指定的 CSS 声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。

而当优先级与多个 CSS 声明中任意一个声明的优先级相等的时候,CSS 中最后的那个声明将会被应用到元素上。

同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的 CSS 规则总是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。

选择器类型

  • 元素选择器(包括伪元素:before
  • class 选择器、属性选择器(type="text") 伪类选择器(:hover)等
  • id 选择器

通配选择符(universal selector)(*关系选择符(combinators)(+, >, ~, '', ||)和 否定伪类(negation pseudo-class)(:not())对优先级没有影响。(但是,在 :not() 内部声明的选择器会影响优先级)。

权重等级

  • !important
  • 行内样式style="xxx"
  • ID选择器,权重为100
  • class 选择器、属性选择器(type="text") 伪类选择器(:hover)等 权重为10
  • 元素选择器(包括伪元素:before) 权重为1

因为内联样式和!important不属于选择器类型,所以不过多介绍,记住,尽量不要使用!important, 关于为何不在样式中使用!important,这里有一篇相关文章介绍https://juejin.cn/post/6844903913909387278。

最后推荐一个网站,用来对 CSS 权重进行计算和比较的 css-specificity-calculator-gflmszgtt.now.sh

如图 page.png

只要在输入框输入相应的 CSS 选择器即可。