正如 Cameron McCormack 所述,Firefox Nightly(版本 29)现已支持 CSS 变量。您可以在此 简短的屏幕录制 中快速了解概况。
您可以使用 var-
前缀在上下文中定义变量,然后使用 var()
指令实现它们。例如
:root {
var-companyblue: #369;
var-lighterblue: powderblue;
}
h1 {
color: var(companyblue);
}
h2 {
color: var(lighterblue);
}
Header on page
Subheader on page
这为文档的根元素定义了两个变量 companyblue
和 lighterblue
,结果为(您可以在此处尝试 使用 Firefox Nightly)
变量是作用域化的,这意味着您可以覆盖它们
:root {
var-companyblue: #369;
var-lighterblue: powderblue;
}
.partnerbadge {
var-companyblue: #036;
var-lighterblue: #cfc;
}
h1 {
color: var(companyblue);
}
h2 {
color: var(lighterblue);
}
Header on page
Subheader on page
Header on page
Subheader on page
使用这些设置,具有 partnerbadge
类别的元素内部的标题现在将 获得其他蓝色设置
变量可以是您想要定义的任何值,您可以像使用其他任何值一样使用它们,例如在 calc()
计算中。您还可以将它们重置为其他值,例如在媒体查询中。 此示例 展示了其中许多可能性。
:root {
var-companyblue: #369;
var-lighterblue: powderblue;
var-largemargin: 20px;
var-smallmargin: calc(var(largemargin) / 2);
var-borderstyle: 5px solid #000;
var-headersize: 24px;
}
.partnerbadge {
var-companyblue: #036;
var-lighterblue: #369;
var-headersize: calc(var(headersize)/2);
transition: 0.5s;
}
@media (max-width: 400px) {
.partnerbadge {
var-borderstyle: none;
background: #eee;
}
}
/* Applying the variables */
body {font-family: 'open sans', sans-serif;}
h1 {
color: var(companyblue);
margin: var(largemargin) 0;
font-size: var(headersize);
}
h2 {
color: var(lighterblue);
margin: var(smallmargin) 0;
font-size: calc(var(headersize) - 5px);
}
.partnerbadge {
padding: var(smallmargin) 10px;
border: var(borderstyle);
}
尝试将窗口大小调整为小于 400 像素,以查看媒体查询更改的实际效果。
CSS 变量的初始实现刚刚在 Firefox Nightly 中发布,该版本目前为版本 29,在 2 月 3 日合并后,在 Firefox Aurora 中发布。在进入 Firefox Beta 和 Firefox 的发布周期之前,规范中还有一些部分需要支持。Cameron 有关这方面的详细信息
规范中尚未实现的唯一部分是
CSSVariableMap
部分,它提供了一个类似于 ECMAScriptMap
的对象,并具有get
、set
和其他方法,用于获取CSSStyleDeclaration
上变量的值。但是请注意,只要您使用完整的属性名称(如"var-theme-colour-1"
),您仍然可以使用getPropertyValue
和setProperty
方法在 DOM 中访问它们。此功能的工作是在 错误 773296 中完成的,感谢 David Baron 对此进行了审查,并感谢 Emmanuele Bassi 进行了部分初始实现工作。如果您在使用此功能时遇到任何问题,请 提交错误报告!
现在,享受在 Nightly 中使用 CSS 变量的乐趣,并告诉我们您发现的任何问题。
关于 Chris Heilmann
HTML5 和开放网络的倡导者。让我们一起解决这个问题!
46 条评论