Non nel senso tradizionale, ma puoi usare le classi per questo, se hai accesso all'HTML. Considera questo:
<p class="normal">Text</p>
<p class="active">Text</p>
e nel tuo file CSS:
p.normal {
background-position : 150px 8px;
}
p.active {
background-position : 4px 8px;
}
Questo è il modo CSS per farlo.
Poi ci sono preprocessori CSS come Sass . Puoi usare i condizionali lì, che assomigliano a questo:
$type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}
Gli svantaggi sono che sei obbligato a pre-elaborare i tuoi fogli di stile e che la condizione viene valutata in fase di compilazione, non in fase di esecuzione.
Una caratteristica più recente del CSS vero e proprio sono le proprietà personalizzate (note anche come variabili CSS). Vengono valutati in fase di esecuzione (nei browser che li supportano).
Con loro potresti fare qualcosa del genere:
:root {
--main-bg-color: brown;
}
.one {
background-color: var(--main-bg-color);
}
.two {
background-color: black;
}
Infine, puoi preelaborare il tuo foglio di stile con la tua lingua lato server preferita. Se stai usando PHP, pubblica un style.css.php
file simile a questo:
p {
background-position: <?php echo (@$_GET['foo'] == 'bar')? "150" : "4"; ?>px 8px;
}
In questo caso, tuttavia, avrai un impatto sulle prestazioni, poiché la memorizzazione nella cache di un tale foglio di stile sarà difficile.