var()

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

概述

var() 函数可以代替元素中任何属性中的值的任何部分。var()方法不能作为属性名、选择器或者其他除了属性值之外的值。(这样做通常会产生无效的语法或者一个没有关联到变量的值。)

语法

方法的第一个参数是要替换的自定义属性的名称。函数的可选第二个参数用作回退值。如果第一个参数引用的自定义属性无效,则该函数将使用第二个值。

var( <custom-property-name> [, <declaration-value> ]? )

<custom-property-name> 自定义属性名
在实际应用中:它被定义为以两个破折号开始的任何有效标识符。 自定义属性仅供作者和用户使用; CSS 将永远不会给他们超出这里表达的意义。
<declaration-value> 声明值
The <declaration-value> production matches any sequence of one or more tokens.  So, as long as the sequence does not contain <bad-string-token>, <bad-url-token>, unmatched <)-token>, <]-token>, or <}-token>, or top-level <semicolon-token> tokens or <delim-token> tokens with a value of "!" ,it represents the entirety of what a valid declaration can have as its value.

示例

:root {
  --main-bg-color: pink;
}
body {
  background-color: var(--main-bg-color);
}
/* Fallback */
/* In the component’s style: */
.component .header {
  color: var(--header-color, blue);
}
.component .text {
  color: var(--text-color, black);
}
/* In the larger application’s style: */
.component {
  --text-color: #080; /* header-color isn’t set, and so remains blue, the fallback value */
}

规范

Specification Status Comment
CSS Custom Properties for Cascading Variables Module Level 1
var()
Working Draft Initial definition

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 48[2]
49
29 (29)[1]
31 (31)
未实现 36 9.3[3]
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support 50 29 (29) 未实现 37 9.3[3]

[1] 在 Gecko 29 中这个特性在layout.css.variables.enabled设置中实现的,默认值是 false,并且使用旧的var-variablename语法。Gecko 31 开始这项设置默认是启用的,并且使用了新的--variablename 语法。

[2] Chrome 48 通过 在 chrome://flags中的"Experimental Web Platform features"标签进行启用。 

[3] 查看 WebKit bug 19660.

另请参见

文档标签和贡献者