选择器特异性计算 - 在线 CSS 选择器特异性计算器

实时计算 CSS 选择器特异性三元组并排序,支持 :is / :not / :has / :where 与嵌套语法,解释样式为什么不生效并给出修复建议

选择器特异性计算 · 使用说明

每行粘贴一个 CSS 选择器,实时给出 (ID, 类, 元素) 三元组、权重与解释,从高到低排序、同级冲突高亮。:where() 恒为 0、:is() / :not() / :has() 取参数最高者、伪元素计入元素位、支持嵌套 &;写错会报出行列号而不是静默失败,附样式不生效排查清单与 :where() / @layer 修复方案,全程本地计算。

示例

输入
#sidebar .menu a.active
输出
(1,3,1) · 权重 131 · 1 个 ID、3 个类、1 个元素

如何使用

  1. 每行粘贴一个选择器(支持复合与函数型伪类)
  2. 查看三元组与权重排序,⚠ 标记为同级冲突
  3. 按排查清单定位不生效的原因
  4. 复制 :where() / @layer 修复建议到样式表

小贴士

  • 同级冲突看源码顺序:后写的赢;都改不了顺序就调特异性
  • 行内 style 与 !important 优先级高于一切计算结果
  • 想整体让位用 @layer,局部降权用 :where() 包住原选择器
  • & 嵌套引用的特异性取决于父选择器,结果为下界估计

常见问题

特异性计算会上传我的选择器吗?

不会。解析与计算全部在你的浏览器里本地完成,输入不离开页面。

三元组 (a,b,c) 怎么比较大小?

从左到右逐位比较:ID 位永远压过任意多个类。十进制权重只是速记,跨位不进位。

:where() 和 :is() 有什么区别?

参数相同,但 :where() 自身特异性恒为 0,:is() 取参数中最高者——用 :where() 写「可被轻易覆盖」的默认样式。

为什么 :has() 也按参数算?

规范规定 :has() 与 :is() 同规则,取参数列表中最高的特异性,本工具已按此实现。

支持 CSS 嵌套语法吗?

支持。& 引用按父选择器叠加特异性,工具按 (0,1,0) 起估并会随父级实际值升高。

📂

松开以自动格式化

支持 .json / .sql / .csv / .html / .css / .xml / .yaml 文件