CSS 绘制 API:Worklet
使用 Paint Worklet 以编程方式创建自定义 CSS 背景图像和边框。
CSS 绘制 API:Worklet 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
什么是 CSS 绘制接口
CSS 绘制接口是 CSS Houdini 的一项功能,可以让您编写 JavaScript 工作单元函数,以编程方式生成背景、边框和遮罩,从而有效扩展 CSS background-image 的渲染能力。
绘制工作单元架构
绘制工作单元是一个在独立工作单元作用域中运行的 JavaScript 文件(不在主线程中运行)。它会注册一个自定义 CSS 绘制器,可作为 CSS 值使用。
编写绘制工作单元
工作单元类会实现 paint() 方法:
<div class="grid"></div>
注册工作单元
从主 JavaScript 中加载工作单元:
<div class="grid"></div>
在 CSS 中使用绘制器
在任何接受图像的属性中引用已注册的绘制器名称:
<div class="grid"></div>
接收 CSS 自定义属性
绘制器可以通过将 CSS 自定义属性声明为输入属性来读取它们:
<div class="swatch"></div>
类似画布的接口
ctx 参数是 PaintRenderingContext2D,即 Canvas 2D 上下文的受限版本。您可以使用熟悉的方法:fillRect、arc、bezierCurveTo 等。
用例
CSS 绘制 API 支持:
- 不借助 SVG 创建复杂的几何背景
- 基于可变数据的背景(进度条、活动图表)
- 由自定义属性驱动的按钮涟漪效果
- 复杂的边框效果(虚线、网纹)
- 波浪分隔线和自然形状
绘制工作线程性能
绘制工作线程在主线程之外(独立的工作线程上下文中)运行,并且仅在其 CSS 自定义属性发生变化时重绘。与在主线程上运行的基于画布的绘制相比,这种方式效率更高。
浏览器支持
Chrome 65+ 和 Edge 79+ 支持 CSS 绘制 API。截至 2024 年,Firefox 和 Safari 尚不支持。请将其用作渐进增强。
使用 @supports 实现优雅降级
请始终提供后备方案,并使用 @supports 仅在支持时应用绘制工作线程:
<div class="element"></div>
快速检查
CSS 绘制工作线程类要实现哪个方法才能执行绘制?
回顾
CSS 绘制 API 允许 JavaScript 工作线程以编程方式生成 CSS 图像。请编写一个包含 paint() 方法的类,使用 registerPaint() 注册它,使用 CSS.paintWorklet.addModule() 加载它,然后将其用作 background: paint(name)。绘制器可以读取 CSS 自定义属性,从而创建由数据驱动的视觉效果。请使用 @supports 提供后备方案。
常见问题解答
「CSS 绘制 API:Worklet」课时是免费的吗?
是的 — 「CSS 绘制 API:Worklet」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「CSS 绘制 API:Worklet」这节课中我会学到什么?
使用 Paint Worklet 以编程方式创建自定义 CSS 背景图像和边框。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「CSS 绘制 API:Worklet」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CSS 类型对象模型(OM)
- CSS 属性和值 API(@property)
- CSS 绘制 API:Worklet
- CSS 布局 API 与作用域