自定义属性 (--*):CSS 变量

Baseline 已广泛支持

该特性已非常成熟,可在多种设备和浏览器版本上使用。自 2017 年 4 月以来,它已在各大浏览器上可用。

-- 为前缀的属性名称,例如 --example-name,表示自定义属性,它们包含一个值,该值可以使用 var() 函数在其他声明中使用。

自定义属性的作用域仅限于它们声明的元素,并参与层叠:此类自定义属性的值是由层叠算法决定的声明中的值。

初始值参见散文
应用于所有元素
继承性
计算值按照替换变量后的规定
动画类型离散

语法

css
--some-keyword: left;
--some-color: #123456;
--some-complex-value: 3px 6px rgb(20 32 54);
<declaration-value>

此值匹配一个或多个令牌的任何序列,只要该序列不包含任何不允许的令牌。它表示有效声明可以作为其值的全部内容。

注意:自定义属性名称区分大小写 — --my-color 将被视为与 --My-color 不同的自定义属性。

示例

HTML

html
<p id="firstParagraph">
  This paragraph should have a blue background and yellow text.
</p>
<p id="secondParagraph">
  This paragraph should have a yellow background and blue text.
</p>
<div id="container">
  <p id="thirdParagraph">
    This paragraph should have a green background and yellow text.
  </p>
</div>

CSS

css
:root {
  --first-color: #1166ff;
  --second-color: #ffff77;
}

#firstParagraph {
  background-color: var(--first-color);
  color: var(--second-color);
}

#secondParagraph {
  background-color: var(--second-color);
  color: var(--first-color);
}

#container {
  --first-color: #229900;
}

#thirdParagraph {
  background-color: var(--first-color);
  color: var(--second-color);
}

结果

规范

规范
CSS Cascading Variables Module Level 1 的自定义属性
# 定义变量

浏览器兼容性

另见