声明和使用自定义属性
使用 -- 前缀定义 CSS 自定义属性,并通过 var() 函数使用它们。
声明和使用自定义属性 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
CSS 自定义属性是什么
CSS 自定义属性(也称为 CSS 变量)可以让您定义一次可复用的值,并在整个样式表中使用它。它们遵循 --name: value 语法。
声明自定义属性
可以在任意元素上声明自定义属性。在 :root 上声明后,这些属性将在全局范围内可用:
<div class="demo">Custom properties declared on :root</div>
使用 var() 函数
使用 var() 函数引用自定义属性:
<button>Styled Button</button>
自定义属性会继承
自定义属性遵循 CSS 的常规继承规则。除非被覆盖,否则在父元素上定义的属性对其所有后代元素都可用。
<div class="card">
<div class="card__body">Inherits --card-bg from .card</div>
</div>
无效的自定义属性值
与常规 CSS 属性不同,无效的自定义属性值不会导致声明被忽略——该变量只会原样解析为自身的值。之后由使用该值的属性判断它是否有效。
自定义属性与 Sass 变量
主要区别:
- CSS 自定义属性在浏览器中动态生效,可以动态更新
- Sass 变量会在构建时被编译消除
- 可以使用 JavaScript 更改自定义属性
- 自定义属性遵循层叠和继承规则
命名约定
请根据语义而不是视觉值为自定义属性命名。这样可以方便日后更新:
<p class="demo">Named --color-primary, --color-text, --size-spacing-sm</p>
全局作用域与组件作用域
在 :root 中定义全局令牌,并在组件的根类上定义组件专用的值:
<div class="card">Global font-size-base + component-scoped card vars</div>
calc() 中的自定义属性
自定义属性可以在 calc() 中使用——如果用于尺寸计算,则必须包含单位:
<div class="nav">Navbar (var(--nav-height))</div>
<div class="main-content">Main content fills the rest via calc()</div>
响应式自定义属性
在媒体查询中更改自定义属性的值,以实现响应式令牌系统:
<div class="section">Padding grows to 6rem on wide screens</div>
用于动画的自定义属性
通过更改自定义属性(通常通过 JavaScript)为元素添加动画,而不是分别更改多个属性:
<div class="progress-track">
<div class="progress"></div>
</div>
快速检查
如何声明名为 --accent 的全局 CSS 自定义属性?
回顾
使用 --name: value 声明 CSS 自定义属性,并使用 var(--name) 使用它们。在 :root 上声明全局令牌;将组件值限制在组件选择器的作用域内。它们会动态生效、遵循层叠规则,并且可以通过 JavaScript 更改,因此比 Sass 变量强大得多。
常见问题解答
「声明和使用自定义属性」课时是免费的吗?
是的 — 「声明和使用自定义属性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「声明和使用自定义属性」这节课中我会学到什么?
使用 -- 前缀定义 CSS 自定义属性,并通过 var() 函数使用它们。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「声明和使用自定义属性」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 声明和使用自定义属性
- 备用值与 var()
- 将变量限定到组件作用域
- 使用 JavaScript 更新变量