我正在处理一个相当长的CSS文件。我知道客户可能会要求更改配色方案,并想知道:是否可以将颜色分配给变量,这样我就可以更改一个变量,使新颜色应用于所有使用它的元素?
请注意,我不能使用PHP动态更改CSS文件。
我正在处理一个相当长的CSS文件。我知道客户可能会要求更改配色方案,并想知道:是否可以将颜色分配给变量,这样我就可以更改一个变量,使新颜色应用于所有使用它的元素?
请注意,我不能使用PHP动态更改CSS文件。
当前回答
CSS通过CSS变量支持这一点。
CSS文件示例
:root {
--main-color:#06c;
}
#foo {
color: var(--main-color);
}
关于工作示例,请参阅这个JSFiddle(该示例显示了小提琴中的一个CSS选择器将颜色硬编码为蓝色,另一个CSS选择器使用CSS变量,包括原始语法和当前语法,将颜色设置为蓝色)。
在JavaScript/客户端操作CSS变量
document.body.style.setProperty('--main-color',"#6c0")
所有现代浏览器都支持
Firefox 31+, Chrome 49+, Safari 9.1+, Microsoft Edge 15+和Opera 36+自带CSS变量支持。
其他回答
是的,在不久的将来(我在2012年6月写了这篇文章)你可以定义原生css变量,而不需要使用更少的/sass等!Webkit引擎刚刚实现了第一个css变量规则,所以Chrome和Safari的前沿版本已经可以使用它们了。查看官方Webkit (Chrome/Safari)开发日志和现场css浏览器演示。
希望在接下来的几个月里,我们可以看到浏览器对原生css变量的广泛支持。
CSS通过CSS变量支持这一点。
CSS文件示例
:root {
--main-color:#06c;
}
#foo {
color: var(--main-color);
}
关于工作示例,请参阅这个JSFiddle(该示例显示了小提琴中的一个CSS选择器将颜色硬编码为蓝色,另一个CSS选择器使用CSS变量,包括原始语法和当前语法,将颜色设置为蓝色)。
在JavaScript/客户端操作CSS变量
document.body.style.setProperty('--main-color',"#6c0")
所有现代浏览器都支持
Firefox 31+, Chrome 49+, Safari 9.1+, Microsoft Edge 15+和Opera 36+自带CSS变量支持。
当然可以,在某种程度上,感谢多个类的奇妙世界,可以做到这一点:
.red {color:red}
.blackBack {background-color: black}
但我经常把它们组合在一起,就像这样:
.highlight {color:red, background-color: black}
我知道语义警察会盯着你,但这很管用。
CSS本身不使用变量。但是,你可以使用另一种语言,比如SASS,用变量来定义你的样式,并自动生成CSS文件,然后你可以把它放在网上。注意,每次对CSS进行更改时都必须重新运行生成器,但这并不难。
由于支持,不要使用css3变量。
如果你想要一个纯css解决方案,我会做以下事情。
Use color classes with semenatic names. .bg-primary { background: #880000; } .bg-secondary { background: #008800; } .bg-accent { background: #F5F5F5; } Separate the structure from the skin (OOCSS) /* Instead of */ h1 { font-size: 2rem; line-height: 1.5rem; color: #8000; } /* use this */ h1 { font-size: 2rem; line-height: 1.5rem; } .bg-primary { background: #880000; } /* This will allow you to reuse colors in your design */ Put these inside a separate css file to change as needed.