最近,变量已被添加到官方CSS规范中.
变量允许你这样的事情:
body, html {
margin: 0;
height: 100%;
}
.theme-default {
--page-background-color: #cec;
--page-color: #333;
--button-border-width: 1px;
--button-border-color: #333;
--button-background-color: #f55;
--button-color: #fff;
--gutter-width: 1em;
float: left;
height: 100%;
width: 100%;
background-color: var(--page-background-color);
color: var(--page-color);
}
button {
background-color: var(--button-background-color);
color: var(--button-color);
border-color: var(--button-border-color);
border-width: var(--button-border-width);
}
.pad-box {
padding: var(--gutter-width);
}Run Code Online (Sandbox Code Playgroud)
<div class="theme-default">
<div class="pad-box">
<p>
This is a test
</p>
<button>
Themed button
</button>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
不幸的是,浏览器支持仍然很差.根据CanIUse,今天唯一支持此功能的浏览器(2016年3月9日)是Firefox 43 +,Chrome 49 +,Safari 9.1+和iOS Safari 9.3+:
在CSS变量得到广泛支持之前,您可以考虑使用CSS预处理器语言,如Less或Sass.
CSS预处理器不仅允许您使用变量,而且几乎允许您使用编程语言执行任何操作.
例如,在Sass中,您可以创建如下函数:
@function exponent($base, $exponent) {
$value: $base;
@if $exponent > 1 {
@for $i from 2 through $exponent {
$value: $value * $base;
}
}
@if $exponent < 1 {
@for $i from 0 through -$exponent {
$value: $value / $base;
}
}
@return $value;
}
Run Code Online (Sandbox Code Playgroud)
元素可以属于多个类,因此您可以执行以下操作:
.DefaultBackColor
{
background-color: #123456;
}
.SomeOtherStyle
{
//other stuff here
}
.DefaultForeColor
{
color:#654321;
}
Run Code Online (Sandbox Code Playgroud)
然后在某个地方的内容部分:
<div class="DefaultBackColor SomeOtherStyle DefaultForeColor">Your content</div>
Run Code Online (Sandbox Code Playgroud)
这里的缺点是它在体内变得相当冗长,而且你不太可能只能将它列为仅列出一次颜色.但是你可能只能做两到三次,你可以将这些颜色组合在一起,也许是在他们自己的工作表中.现在,当你想要改变颜色方案时,它们都在一起,而且变化非常简单.
但是,是的,我对CSS最大的抱怨是无法定义自己的常量.