我正在处理一个相当长的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变量支持。

其他回答

你可以对选择器进行分组:

#selector1, #selector2, #selector3 { color: black; }

我不清楚为什么不能使用PHP。然后,您可以根据需要简单地添加和使用变量,将文件保存为PHP文件,并链接到. PHP文件作为样式表,而不是.css文件。

它不一定是PHP,但你明白我的意思。

当我们需要编程的东西时,为什么不使用编程语言,直到CSS(可能)支持变量之类的东西?

还有,看看Nicole Sullivan的面向对象的CSS。

你可以通过javascript传递CSS,用特定的颜色替换所有的color1实例(基本上是regex它),并提供一个备份样式表,以防最终用户关闭JS

你可以试试CSS3变量:

body {
  --fontColor: red;
  color: var(--fontColor);
}

恐怕不是PHP,而是Zope和Plone使用类似于SASS的DTML来实现这一点。它在CMS中非常有用。

Upfront Systems在Plone中有一个很好的例子。