CSS Houdini

CSS Houdini 是一套公开 CSS 引擎部分的 API。这使得开发人员更容易为 CSS 创建扩展。这些扩展可能是为了填充浏览器中尚不可用的功能,试验新的布局方法,或添加创意边框或其他效果。

虽然许多 Houdini 示例展示了 API 的创造性可能性,但它也有许多实际用例。例如,您可以使用 Houdini 创建具有类型检查和默认值的复杂自定义属性。

基本示例

常规的 CSS 自定义属性 由属性名称和值组成。因此,我可能会创建一个名为 --background-color 的自定义属性,并期望它被赋予一个颜色值。然后,该值在 CSS 中的使用方式与颜色值相同。

css
:root {
  --background-color: blue;
}

.box {
  background-color: var(--background-color);
}

但是,在上面的示例中,没有任何东西可以阻止某人对该属性使用其他一些值,例如将其设置为长度。这样做之后,在任何使用该属性的地方都不会有背景颜色,因为 background-color: 12px 无效。当浏览器遇到无法识别的 CSS 时,它会丢弃该行。

但是,使用 @property,我们可以使用 <color>syntax 来声明自定义属性。这表明我们需要该属性具有一个有效颜色的值。

css
@property --background-color {
  syntax: "<color>";
  inherits: false;
  initial-value: blue;
}

Houdini 工作线程

Houdini 的一项功能是 Worklet。Worklet 是一个用 JavaScript 编写的模块,它使用 Houdini API 中的一个扩展 CSS。您可以在 PaintWorkletGlobalScope.registerPaint() 页面上看到一个 Worklet 示例。注册 Worklet 后,您可以在 CSS 中像使用任何其他值一样使用它。这意味着,即使您不是 JavaScript 开发人员,也可以通过使用其他人创建的 Worklet 来访问 Houdini API。

Houdini.how 网站提供了一些您可以在自己的站点上尝试的 Worklet。

参考

CSS @规则和描述符

@property @规则允许您注册一个高级自定义属性。

Houdini API 参考

Houdini 指南

外部资源