@layer 声明与排序
声明命名的层叠层,并使用 @layer 语句控制它们的优先级顺序。
@layer 声明与排序 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
什么是 @layer
CSS 层叠层(@layer)提供了一种机制,可以在不依赖特异性的情况下,显式控制 CSS 规则在层叠中的优先级。即使选择器具有更高的特异性,优先级较低的层仍会失效。
@layer 为什么重要
没有层时,每条 CSS 规则都会通过特异性和源代码顺序进行竞争。当重置样式、组件样式和工具样式都争夺优先级时,就会导致特异性之争。层为每个组提供了固定且可预测的优先级。
声明层
请在开头通过一条语句声明各个层。声明顺序决定优先级,后声明的层会覆盖先声明的层。
<p>This scene only declares layer order — see the CSS panel:</p>
<p style="color:#888;font-size:0.9em;">@layer reset, base, components, utilities;</p>层声明的位置
@layer 声明应位于样式表的顶部(或主导入文件的顶部)。声明之后,可以按任意顺序向层添加样式;优先级由声明顺序决定,而不是由添加样式的位置决定。
为什么源代码顺序对层不起作用
由于层的优先级在声明时确定,因此可以在任意位置向层添加样式,甚至可以通过前向引用,在层声明之前添加样式。真正重要的是已声明的顺序。
层优先级规则
无论特异性如何,后声明层中的声明始终会覆盖先声明层中的声明:
<p>Reset layer !important paragraph (red)</p>
<div id="header">Components layer header (blue)</div>未分层样式
放置在任何层之外的样式称为未分层样式。它们具有最高优先级,甚至高于最后声明的层。请将其用于必须始终生效的紧急覆盖。
优先级栈
完整的优先级顺序(作者样式从高到低):
- 未分层样式(位于任何 @layer 之外)
- 最后声明的层(例如工具层)
- 倒数第二个层(例如组件层)
- 更早声明的层(基础层、重置层)
层中的 !important 反转
层中的 !important 比较棘手:它会反转该声明的层顺序。最早层中的 !important 会覆盖后续层中的 !important。这与用户样式和作者样式的原始层叠行为一致。
嵌套层
可以使用点号表示法嵌套层:
<p>This scene declares nested layers with dot notation — see the CSS panel.</p>实用设置示例
一个符合实际项目的层设置:
<p>A realistic project layer order — see the CSS panel.</p>快速检查
层声明为:@layer base, components, utilities。发生冲突时,哪个层的样式会获胜?
回顾
@layer 会建立具有明确顺序的层叠层。请按优先级顺序声明层名称(优先级最低的在前)。后声明的层始终会覆盖先声明的层,与特异性无关。未分层样式具有最高优先级。!important 会反转该声明的层优先级顺序。
常见问题解答
「@layer 声明与排序」课时是免费的吗?
是的 — 「@layer 声明与排序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「@layer 声明与排序」这节课中我会学到什么?
声明命名的层叠层,并使用 @layer 语句控制它们的优先级顺序。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「@layer 声明与排序」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- @layer 声明与排序
- 向层叠层添加样式
- 层叠层优先级与 !important 的交互
- 第三方代码中的层叠层