Come posso definire i colori come variabili nei CSS?


215

Sto lavorando a un file CSS che è piuttosto lungo. So che il cliente potrebbe chiedere modifiche alla combinazione di colori, e mi chiedevo: è possibile assegnare i colori alle variabili, così posso semplicemente cambiare una variabile per avere il nuovo colore applicato a tutti gli elementi che lo usano?

Nota che non posso usare PHP per cambiare dinamicamente il file CSS.




Risposte:


224

CSS supporta questo nativamente con variabili CSS .

Esempio di file CSS

:root {
    --main-color:#06c;
}

#foo {
    color: var(--main-color);
}

Per un esempio funzionante, vedere questo JSFiddle (l'esempio mostra che uno dei selettori CSS nel violino ha il colore hard coded to blue, l'altro selettore CSS utilizza le variabili CSS, sia la sintassi originale che quella corrente, per impostare il colore su blue) .

Manipolazione di una variabile CSS in JavaScript / lato client

document.body.style.setProperty('--main-color',"#6c0")

Il supporto è in tutti i browser moderni

Firefox 31+ , Chrome 49+ , Safari 9.1+ , Microsoft Edge 15+ e Opera 36+ vengono forniti con supporto nativo per le variabili CSS.


3
Nel caso in cui qualcun altro lo legga e cerchi di farlo funzionare in Safari - il supporto per CSS sembra essere stato rimosso da Webkit nella primavera / estate 2013. bugs.webkit.org/show_bug.cgi?id=114119 lists.webkit.org /pipermail/webkit-dev/2013-April/024476.html Funziona ancora in Chrome dopo aver abilitato il flag di cui sopra.
Marie Fischer,

Testato su Chrome 36, non funziona nemmeno con il flag abilitato. Funziona comunque con Firefox
yuvi

L'ho appena verificato con la versione 49.0.2623.110 di Chrome e non funziona ancora.
radu,

Qual è il tuo sistema operativo? Ha funzionato per me: versione 49.0.2623.110 (64 bit) su Mac OS X
Arthur Weborg

Ha funzionato anche con la versione Chrome del mio Android Android 5.1.0 Chrome 49.0.2623.105
Arthur Weborg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.