Não no sentido tradicional, mas você pode usar classes para isso, se tiver acesso ao HTML. Considere isto:
<p class="normal">Text</p>
<p class="active">Text</p>
e em seu arquivo CSS:
p.normal {
background-position : 150px 8px;
}
p.active {
background-position : 4px 8px;
}
Essa é a maneira CSS de fazer isso.
Depois, há pré-processadores CSS como o Sass . Você pode usar condicionais lá, que seriam assim:
$type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}
As desvantagens são que você precisa pré-processar suas folhas de estilo e que a condição é avaliada em tempo de compilação, não em tempo de execução.
Um recurso mais recente do CSS adequado são as propriedades personalizadas (também conhecidas como variáveis CSS). Eles são avaliados em tempo de execução (em navegadores que os suportam).
Com eles, você poderia fazer algo ao longo da linha:
:root {
--main-bg-color: brown;
}
.one {
background-color: var(--main-bg-color);
}
.two {
background-color: black;
}
Finalmente, você pode pré-processar sua folha de estilo com sua linguagem de servidor favorita. Se estiver usando PHP, forneça um style.css.php
arquivo parecido com este:
p {
background-position: <?php echo (@$_GET['foo'] == 'bar')? "150" : "4"; ?>px 8px;
}
Nesse caso, você terá, no entanto, um impacto no desempenho, já que armazenar em cache essa folha de estilo será difícil.