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