CSS: registerProperty() 静态方法

Baseline 2024
新推出

自 ⁨2024 年 7 月⁩起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

CSS.registerProperty() 静态方法用于注册自定义属性,从而实现属性类型检查、设置默认值以及控制属性是否继承其值。

注册自定义属性可以让您告诉浏览器该自定义属性应如何表现;允许哪些类型,自定义属性是否继承其值,以及自定义属性的默认值是什么。

语法

js
CSS.registerProperty(propertyDefinition)

参数

propertyDefinition

包含以下属性的对象:

name

一个字符串,表示正在定义的属性的名称。

syntax 可选

一个字符串,表示定义的属性的预期语法。默认为 "*"

inherits

一个布尔值,定义定义的属性是否应继承(true)或不继承(false)。默认为 false

initialValue 可选

一个字符串,表示定义的属性的初始值。

返回值

undefined.

异常

InvalidModificationError DOMException

给定的 name 已被注册。

SyntaxError DOMException

给定的 name 不是有效的自定义属性名称(以两个破折号开头,例如 --foo)。

TypeError

未提供必需的 name 和/或 inherits 字典成员。

示例

以下示例将使用 registerProperty() 注册一个自定义属性 --my-color,将其类型设置为颜色,设置默认值,并使其不继承其值。

js
window.CSS.registerProperty({
  name: "--my-color",
  syntax: "<color>",
  inherits: false,
  initialValue: "#c0ffee",
});

在此示例中,自定义属性 --my-color 已使用 <color> 语法注册。我们现在可以使用该属性来在悬停或聚焦时为渐变设置动画。请注意,使用注册的属性时,动画可以正常工作,但使用未注册的属性时则不行!

css
.registered {
  --my-color: #c0ffee;
  background-image: linear-gradient(to right, white, var(--my-color));
  transition: --my-color 1s ease-in-out;
}

.registered:hover,
.registered:focus {
  --my-color: #b4d455;
}

.unregistered {
  --unregistered: #c0ffee;
  background-image: linear-gradient(to right, white, var(--unregistered));
  transition: --unregistered 1s ease-in-out;
}

.unregistered:hover,
.unregistered:focus {
  --unregistered: #b4d455;
}
button {
  font-size: 3vw;
}

我们可以将这些样式添加到一些按钮上

html
<button class="registered">Background Registered</button>
<button class="unregistered">Background Not Registered</button>

规范

规范
CSS 属性和值 API Level 1
# the-registerproperty-function

浏览器兼容性

另见