CSS: registerProperty() 静态方法
**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, #fff, 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, #fff, 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 级别 1 # the-registerproperty-function |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。