CSS 布局 API 与作用域
使用 CSS 布局 API 构建自定义布局算法,并了解 Houdini 的作用范围和限制。
CSS 布局 API 与作用域 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
CSS Houdini 概览
CSS Houdini 是一组底层 API,可将 CSS 渲染引擎的部分功能暴露给 JavaScript。它包括:类型化 OM、属性和值 API、绘制 API、布局 API 以及动画工作线程。这些功能结合起来,可以实现自定义 CSS 扩展。
什么是 CSS 布局 API
CSS 布局 API 允许开发者使用 JavaScript 定义自定义布局算法,并将其用作 CSS display 属性的值。您可以创建功能与网格布局或弹性盒布局一样强大的布局。
布局工作线程结构
布局工作线程需要实现 intrinsicSizes() 和 layout() 方法,并使用 registerLayout() 注册:
<div class="masonry-container">
<div class="item" style="height: 60px;">1</div>
<div class="item" style="height: 100px;">2</div>
<div class="item" style="height: 40px;">3</div>
<div class="item" style="height: 80px;">4</div>
<div class="item" style="height: 120px;">5</div>
<div class="item" style="height: 50px;">6</div>
</div>
使用自定义布局
在 CSS 中引用已注册的布局:
<div class="masonry-container">
<div class="item" style="height: 60px;">1</div>
<div class="item" style="height: 100px;">2</div>
<div class="item" style="height: 40px;">3</div>
<div class="item" style="height: 80px;">4</div>
<div class="item" style="height: 120px;">5</div>
<div class="item" style="height: 50px;">6</div>
</div>
布局 API 状态
CSS 布局 API 的浏览器支持有限,目前大多处于实验阶段(在 Chrome 中需要启用标志)。如今,它更像是研究性或面向未来的 API,而不是生产工具。瀑布流布局也可能改由浏览器原生实现。
@scope 规则
@scope 是一项较新的 CSS 功能(属于 CSS 作用域规范),可以将 CSS 规则的作用范围限制在特定的 DOM 子树内,而无需到处添加类。
@scope 语法
定义作用域根元素,并可选择性地定义作用域边界:
<div class="card">
<p class="title">Scoped Title</p>
<p>Body text inside the card.</p>
</div>
带边界的 @scope
作用域边界可以防止规则匹配嵌套组件内部的内容:
<div class="article">
<p>Article paragraph styled with 1.7 line-height by the scoped rule.</p>
<div class="advertisement">
<p>Ad paragraph is outside the scope limit, so it keeps the default line-height.</p>
</div>
</div>
:scope 伪类
在 @scope 中,:scope 表示作用域根元素:
<div class="card is-hovered">
<p>Hover state applied statically for preview</p>
</div>
@scope 浏览器支持
Chrome 118+ 和 Safari 17.4+ 支持 @scope。Firefox 即将支持。请结合 @supports 使用,以便安全部署。
Houdini 的更广泛愿景
CSS Houdini 的目标是让 Web 平台具有可扩展性——让开发者能够直接为 CSS 添加功能,而不必等待浏览器厂商实现这些功能。目前可用的 API(类型化 OM、@property、绘制 API)是这一愿景中最适合用于生产的部分。
快速检查
@scope (.card) 在 CSS 中实现什么效果?
回顾
CSS Houdini 是一组用于暴露渲染引擎功能的 API。布局 API 支持自定义显示算法,但目前大多处于实验阶段。@scope 将 CSS 规则的作用范围限制在特定的 DOM 子树内,从而无需严格遵循 BEM 命名也能防止样式泄漏。Houdini 中最适合用于生产的功能是类型化 OM、@property 和绘制 API。
常见问题解答
「CSS 布局 API 与作用域」课时是免费的吗?
是的 — 「CSS 布局 API 与作用域」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「CSS 布局 API 与作用域」这节课中我会学到什么?
使用 CSS 布局 API 构建自定义布局算法,并了解 Houdini 的作用范围和限制。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「CSS 布局 API 与作用域」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CSS 类型对象模型(OM)
- CSS 属性和值 API(@property)
- CSS 绘制 API:Worklet
- CSS 布局 API 与作用域