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() 函数有两个参数:
- 参考自定义属性
- 后备值(可选)。如果第一个参数不是未定义或无效,则使用后备值。
例子:
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() 函数。