I fogli di stile CSS nel tempo hanno reso necessario un maggior controllo, svolto da preprocessori CSS (un linguaggio di scripting che trasformerà il codice CSS con variazioni di sintassi minori in normali CSS3, fonte), quindi è nata un'estensione del linguaggio CSS, chiamata SASS (Syntactically Awesome StyleSheets) che ha estensione .sass o .scss. Si integra con diversi ambienti di sviluppo.
Oltre a caratteristiche comode, funzionali, come il "nesting" ad esempio (annidare le dichiarazioni), caratteristiche degne di nota sono:
- creazione di variabili
- cicli e condizioni
- operatori matematici
- funzionamento modulare (@import "nomefile")
Esistono anche delle alternative a SASS, senza approfondire il tema, veniamo alla domanda: SASS o JavaScript?
All'interno di una pagina HTML, possiamo includere fogli di stile (esterni, in blocco, inline che siano) quindi con l'ipotesi anche di fare uso di preprocessori CSS, linguaggio SASS. Ebbene, anche gli script di JavaScript come sappiamo si integrano alla perfezione in HTML e ovviamente essendo JavaScript un linguaggio di programmazione vero e proprio, i concetti di variabile, cicli, condizioni sono perfettamente applicabili. Un esempio di come JavaScript interagisce con CSS è questo, che poi commentiamo:
<html>
<style>
#box{background:
#ff0;}
</style>
<div id="box"></box>
<script>
document.getElementById("box").innerHTML="<p>ciao</p>";
box.style.background="
#aaf";
</script>
</html>
La pagina HTML (senza head, body, per alleggerire qui la sintassi) semplicemente contiene un div, vuoto, con identificativo "box". Il codice CSS crea un background giallo a questo blocco. Poi tramite JavaScript (usando innerHTML) vado ad interagire con l'oggetto "box" e inserisco un paragrafo di testo. Sempre tramite JavaScript cambio il background, mettendolo azzurro (modificando quindi il giallo fatto con CSS).
Questo esempio per dire: un linguaggio come JavaScript può benissimo interfacciarsi con CSS ed è solo un esempio banale, si può fare ben altro. Io ho sempre fatto a meno di SASS (lo conoscevo poco, tra l'altro, solo sentito nominare). Voi cosa ne pensate?