CSS 中的自定义属性是什么?

CSS3 中引入了一种称为自定义属性或 CSS 变量的功能。此功能使开发人员能够定义可重用的变量。

在一个大型项目中,在很多地方应用相同的样式,就像在很多地方使用相同的颜色一样。现在,假设需要更改颜色,那么必须替换所有使用过颜色的地方。这是费力不讨好的做法。

例子:

css 复制代码
.selector1 {
   color: "#aaa";
}
.selector2 {
   color: "#aaa";
}
.selector3 {
   color: "#aaa";
}

在此示例中,在三个地方使用了相同的颜色。如果想改变它,那么必须更新所有地方。

自定义属性通过在单个位置定义颜色并在我们想要的任何地方使用它来解决这个问题。

css 复制代码
:root{
  --mycolor: "#aaa";
}

.selector1 {
   color: var(--mycolor);
}
.selector2 {
  color: var(--mycolor);
}
.selector3 {
   color: var(--mycolor);
}

语法

自定义属性以双破折号 (--) 为前缀。

例子:

css 复制代码
   --main-color: blue;
  --secondary-color: black;
  --card-padding: 8px; 

如何使用它们

要使用自定义属性,使用 var() 函数。例如:

css 复制代码
.container {
   background-color: var(--main-color);
}

Fallback value

var() 函数有两个参数:

  1. 参考自定义属性
  2. 后备值(可选)。如果第一个参数不是未定义或无效,则使用后备值。

例子:

css 复制代码
.container{
  background-color: var(--main-color, green);
}

在此示例中,该var()函数使用第一个参数 (--main-color)(如果可用),否则使用green颜色作为.container.

自定义属性的范围

自定义属性可以具有全局范围或局部范围。

全局范围:

可以在 :root 伪类中定义全局属性,然后可以在整个 HTML 文档中访问它。可以在任何选择器中使用它们。

例子:

css 复制代码
:root{
  --main-bg-color: blue;
  --primary-color: "#ccc";
  --text-light-grey: "#aaa";
}

.selector1{
  background-color: var(--main-bg-color);
}

.selector2{
  color: var(--text-light-grey);
}

局部范围:

可以在该选择器及其子级中访问在选择器中定义的自定义属性。无法在该选择器之外访问它。

例子:

css 复制代码
.selector1 {
  /* local scoped variable */
  --bg-color: red;

   background-color: var( --bg-color);
}

.selector2 {
  /* Wrong!  can't access local scoped variable  */
   background-color: var(--bg-color);
}

概括

  • 使用 CSS 自定义属性(也称为变量)可以帮助提高代码的可重用性。
  • 可以在 : root 伪类中定义全局属性
  • 要使用自定义属性,使用 var() 函数。
相关推荐
QQ1__8115175152 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态2 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子2 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室2 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI2 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing2 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者2 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册2 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李2 小时前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢2 小时前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web