不是传统意义上的,但如果您可以访问 HTML,您可以为此使用类。考虑一下:
<p class="normal">Text</p>
<p class="active">Text</p>
在您的 CSS 文件中:
p.normal {
background-position : 150px 8px;
}
p.active {
background-position : 4px 8px;
}
这就是 CSS 的方法。
还有像 Sass 这样的 CSS 预处理器。你可以在那里使用conditionals,看起来像这样:
$type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}
缺点是,您必须对样式表进行预处理,并且条件是在编译时而不是运行时评估的。
CSS 本身的一个新特性是custom properties(又名 CSS 变量)。它们在运行时进行评估(在支持它们的浏览器中)。
有了他们,你可以做一些事情:
:root {
--main-bg-color: brown;
}
.one {
background-color: var(--main-bg-color);
}
.two {
background-color: black;
}
最后,您可以使用您最喜欢的服务器端语言预处理您的样式表。如果您使用的是 PHP,请提供一个 style.css.php 文件,如下所示:
p {
background-position: <?php echo (@$_GET['foo'] == 'bar')? "150" : "4"; ?>px 8px;
}
但是,在这种情况下,您会对性能产生影响,因为缓存这样的样式表会很困难。