CSS 变量(正式称为 CSS 自定义属性)的行为与其他编程语言中的变量非常相似。它们允许您定义包含可在 CSS 文档中重复使用的特定值的命名变量。
什么是CSS自定义变量
CSS 变量(正式称为 CSS 自定义属性)的行为与其他编程语言中的变量非常相似。它们允许您定义包含可在 CSS 文档中重复使用的特定值的命名变量。正如自定义属性符号中所指定的那样,CSS 变量以两个破折号作为前缀(例如--my-color: black
)。要访问它们,您可以使用该var()
功能(例如color: var(--my-color)
)。CSS 变量对于在不同元素和组件之间共享样式非常有用。示例包括但不限于垂直节奏、排版变量和调色板。
他们最常见的用例之一是主题和暗模式。CSS 变量可用于在整个网站上创建一个共享调色板,并轻松地将其替换为不同的调色板。这通常是通过将一个类应用到一个共同的祖先(例如<body>
元素)来实现的。这个例子演示了在:root
元素和级联中定义的全局变量,因为元素从它们的父元素继承值:
/* Global variables are defined in the :root element. */
:root {
--bg-color: #fff;
--main-color: #000;
--secondary-color: #222;
}
/* Elements inherit variables from their parents. */
body {
background-color: var(--bg-color);
color: var(--main-color);
}
small {
color: var(--secondary-color);
}
/* Elements can define their own values and variables, overriding inherited ones.*/
body.dark {
--bg-color: #080808;
--main-color: #fff;
--secondary-color: #ccc;
}
另一个有用的示例是为元素的某些变体定义共享的自定义样式。这允许定制整个组件树而无需重复任何样式。下面的示例演示了比前一个更好的级联。它还引入了在不同元素之间共享样式的想法:
.btn {
--bg-color: #002299;
--text-color: #fff;
--highlight-color: #669900;
background-color: var(--bg-color);
color: var(--text-color);
}
/* --highlight-color is also available to the children of .btn */
.btn .highlight {
color: var(--highlight-color);
}
/* .btn.danger .highlight will use the --highlight-color defined in .btn-danger */
.btn-danger {
--bg-color: #dd4a68;
--text-color: #000;
--highlight-color: #990055;
}
最后,请记住以下有关使用 CSS 变量的有用提示:
您可以通过向var()
函数提供第二个参数来定义回退值(例如,var(--text-color, black)
将默认为blackif--text-color
未定义)。
CSS 变量区分大小写,因此请注意大小写。它们也可以像任何其他样式(例如<div style="--text-color: red">
)一样在 HTML 中内联。
您可以嵌套var()调用,使用另一个变量作为后备(例如var(--main-color, var(--other-color))
),将它们传递给其他函数,例如calc()
甚至将一个变量分配给另一个(例如--text-color: var(--main-color)
)。