Web & 认证

CSS 优先级计算器 — 选择器权重与对比

计算任意 CSS 选择器的优先级,查看每个部分的贡献,并对比两个选择器判断哪条规则会在层叠中胜出。

免费使用 无需注册 浏览器本地运行

工具操作区

1
ID 选择器
3
类、属性、伪类
1
元素、伪元素
优先级
1,3,1
#mainID.card[data-open]属性:hover伪类a元素

与另一个选择器对比

#main .card[data-open]:hover a 胜过 .card a:not(.plain) (1,3,1 > 0,2,1)

选择器在浏览器内解析,不会发送到任何地方。

浏览器如何决定应用哪条规则

当两条规则为同一元素设置同一属性时,浏览器会比较由三个数字组成的优先级:第一位统计 ID 选择器,第二位统计类、属性选择器和伪类,第三位统计元素名和伪元素。三组按顺序比较,因此一个 ID 会胜过任意数量的类。通配选择器和连接符不贡献权重;:where() 恒为零;:is()、:not() 和 :has() 取其参数中最高的优先级。本工具按这些规则计算,并标出每一分来自哪个片段。

如何使用计算器

  1. 1输入或粘贴一个选择器。请逐个输入,因为逗号分隔的选择器列表没有统一的优先级。
  2. 2查看三列数值,了解它包含多少 ID、类级选择器和元素级选择器。
  3. 3查看下方的片段拆解,确认每一分具体由选择器的哪一部分贡献。
  4. 4输入竞争选择器,判断二者谁会胜出、在哪一组分出胜负。
  5. 5如果两者相同,请记住样式表中靠后的规则胜出,此时调整顺序可能比堆叠权重更合适。

CSS 优先级计算器 — 选择器权重与对比的常见使用场景

快速完成日常任务

无需安装桌面软件,打开网页即可处理常见的文本、图片、数据或格式转换任务。

检查与整理内容

在提交文件、发布内容或复制结果之前,快速发现格式问题并获得结构清晰的输出。

注重隐私的浏览器处理

对于支持本地运行的工具,数据会留在当前浏览器中,不需要上传到第三方服务。

常见问题

行内样式和 !important 处于什么位置?

它们不在这三个数字之内。行内 style 属性胜过任何选择器,!important 则无视优先级胜过普通声明。由于二者会短路层叠机制,会让样式更难被后续覆盖,在共享代码中应尽量避免。

为什么 :where() 计为零?

这正是它的设计目的。:where() 让组件库可以匹配复杂结构而不增加任何权重,业务代码用一个简单选择器就能覆盖。:is() 写法相似,但会取其参数中最高的权重。

后代选择器链中的元素数量重要吗?

只影响第三组。div span a 计为三个元素选择器,仍然输给一个类。>、+、~ 等连接符完全不增加权重,通配选择器 * 同样如此。

为什么不能输入选择器列表?

逗号分隔的列表是多个彼此独立的选择器,各自单独匹配和计分,整个列表没有统一的优先级。因此工具要求逐个输入,以免给出有误导性的数值。