CSS 属性和值 API(@property)
使用 @property 注册带有类型和继承行为的自定义属性,以创建可动画的 CSS 变量。
CSS 属性和值 API(@property) 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
什么是 @property
@property 是 CSS 用于注册自定义属性的方式,可以为属性指定类型、继承行为和初始值。它是 CSS 属性和值接口(CSS.registerProperty)的声明式形式。
@property 语法
请使用三个必需的描述符注册自定义属性:
<div class="box"></div>
语法描述符
syntax 描述符使用 CSS 类型名称定义属性的类型:
"<number>"、"<integer>"、"<percentage>""<angle>"、"<color>"、"<length>""<image>"、"<transform-list>""*"——接受任意值(类似未注册属性)
继承描述符
控制属性是否通过 DOM 继承。对于应当在每个元素中独立存在的属性,请设置为 false。
初始值描述符
当属性未设置时提供一个有保证的初始值。这样可以使属性支持动画。
为自定义属性制作动画
@property 的主要优势在于:注册后的自定义属性可以进行过渡和动画,因为浏览器知道它们的类型,并且可以在不同值之间进行插值:
<div class="element is-hovered"></div>
不使用 @property 时
如果不进行注册,CSS 不知道自定义属性的类型。两个变量值之间的过渡会直接跳变,而不会进行插值——浏览器无法计算未知类型的中间值。
使用 @property 制作渐变动画
为渐变色标制作动画(过去不使用 @property 就无法实现):
<div class="loader loading"></div>
JavaScript 等效方式
您也可以使用 JavaScript 接口注册属性:
<div id="box"></div>
<script>
// JavaScript equivalent of @property
CSS.registerProperty({
name: '--rotation',
syntax: '<angle>',
inherits: false,
initialValue: '0deg'
});
document.getElementById('box').style.setProperty('--rotation', '45deg');
</script>
浏览器支持情况
@property 受到 Chrome 85 及更高版本、Edge 85 及更高版本、Safari 16.4 及更高版本、Firefox 128 及更高版本的支持。在现代浏览器中已得到广泛支持。
@property 的实际用途
常见用例:
- 为渐变位置和颜色制作动画
- 为 HSL 颜色中的色相/饱和度制作动画
- 为进度条填充效果制作动画
- 为数字显示效果制作计数动画
- 通过颜色令牌动画实现平滑的深色/浅色模式过渡
快速检查
为什么为 CSS 自定义属性制作动画需要使用 @property?
回顾
@property 使用 syntax 类型、inherits 标志和 initial-value 注册自定义属性。注册后的属性支持动画和过渡,因为浏览器可以对其类型化值进行插值。这样便可以实现未注册自定义属性无法实现的渐变动画、色相过渡和计数动画。
常见问题解答
「CSS 属性和值 API(@property)」课时是免费的吗?
是的 — 「CSS 属性和值 API(@property)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「CSS 属性和值 API(@property)」这节课中我会学到什么?
使用 @property 注册带有类型和继承行为的自定义属性,以创建可动画的 CSS 变量。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「CSS 属性和值 API(@property)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CSS 类型对象模型(OM)
- CSS 属性和值 API(@property)
- CSS 绘制 API:Worklet
- CSS 布局 API 与作用域