层叠、优先级、继承和 !important 谁先决定样式?
参考答案
最终样式来自一套层叠排序:先考虑来源、重要性与层叠层等,再比较选择器特异性,必要时比较作用域接近程度和出现顺序。仅比较 id、class 和标签数量不足以解释所有结果。
继承发生在属性没有通过层叠获得指定值等情况下,并不是父元素选择器优先级传递给子元素。:where 的特异性为零;:is、:not、:has 的特异性与参数相关,不能统一视为普通伪类权重。
!important 应作为受控例外而不是常规布局工具。排查样式时使用 DevTools 查看被覆盖声明、来源层与继承链,再调整结构,避免不断增加选择器长度导致维护成本上升。