源码顺序
权重相同的规则,通常后写的会覆盖前面的。
.button { color: black; }
.button { color: white; }
CSS DEVELOPMENT LAB · 19
CSS 大项目最容易失控的地方,不是 Grid 或 Flex,而是“到底哪条规则生效”。 本实验用按钮、卡片和工具类,理解层叠顺序、Specificity、源码顺序与 @layer。
REAL PROBLEM
当组件样式、页面样式、工具类互相覆盖时,很多项目会不断增加选择器权重, 最后出现 `.page .section .card .button` 甚至大量 `!important`。
权重相同的规则,通常后写的会覆盖前面的。
.button { color: black; }
.button { color: white; }
更具体的选择器,可能压过后面更简单的规则。
.card .button { ... }
.button { ... }
短期能解决问题,长期很容易继续升级冲突。
.button {
color: white !important;
}
LAYER ORDER
本实验把样式分成 reset、base、components、utilities 四层。 对普通声明来说,后面的 Layer 优先级更高。
SPECIFICITY
`@layer` 可以管理“不同来源模块之间”的优先级,但同一个 Layer 内部, 仍然要遵守 Specificity 和源码顺序。
p元素选择器低.button类选择器中#heroID 选择器高style=""内联样式更高PROJECT ARCHITECTURE
box-sizing、margin 清理、图片默认行为。
body、标题、链接、排版和 Design Tokens。
Button、Card、Tabs、Accordion、Navigation。
隐藏、对齐、间距、特殊状态等小范围调整。
IMPORTANT DETAIL
① 未放进任何 Layer 的普通样式,会比 Layer 内普通样式优先。
②
!important 的 Layer 优先顺序与普通声明不同,不建议拿它做日常覆盖策略。
③ 最好的目标仍然是:选择器简单、职责明确、覆盖关系可以预测。