SASS per i CSS (1)

 
SASS per i CSS

I CSS sono uno degli elementi che nel corso degli anni, nel settore del web, si sono meno evoluti dal pundo ti vista della struttura utilizzata. Nelle corso delle diverse versioni sono state aggiunge solo proprietà e selettori nuovi.

Probabilmente penserete:

Se non sono cambiati tantomeglio, evito di dover imparare qualche cosa di nuovo!

Purtroppo, non essendosi evoluti non abbiamo a disposizione cose che potremmo ritenere molto comodo, pensate ad esempio alla possibilità di creare variabili con larghezze, poter effettuare dinamicamente operazioni sulle stesse (per esempio questa colonna è pari alla metà della larghezza della colonna principale), oppure il colore di un selettore è pari al colore definito come colore-base a cui viene rimosso "un pò" del colore rosso.

Bene, vediamo cosa si può fare per migliorare (e semplificare) il nostro lavoro di realizzazione di CSS.

Esiste un metalinguaggio che permette di ridefinire il modo in cui vengono scritti i CSS rendendo il tutto più semantico ed ordinato.
Questo metalinguaggio è il SASS, che sta ad indicare Syntactically Awesome StyleSheets, di cui potete trovare le specifiche alla pagina ufficiale del progetto. Vediamo un attimo cosa ci permette di fare.

Innanzitutto si basa sull'indentazione del testo per assegnare le proprietà ai selettori, quindi:

p em
  :border-size 1px
  :border-color #AAAAAAA
  :padding 0.1em
  :bacground-color #CCCCCC

e fin qui nulla di sconvolgente se non che ci siamo risparmiati l'utilizzo delle parentesi graffe

Possiamo anche definire delle costanti che poi possiamo utilizzare all'interno del foglio di stile

!colore-elemento = #AAAAAA
p em
  :border-size: 1px
  :border-color: !colore-elemento
  :padding: 0.1em
p strong
  :border-size: 1px
  :border-color = !colore-elemento
  :padding: 0.1em

E già questo permette di ridefinire solo alcuni elementi e il tutto si riperquote in cascata, ma anche qui si potrebbe ovviare con una buona scrittura del foglio di stile e un pò di Trova e Sostituisci.

Proseguendo possiamo vedere che è possibile andare ad utilizzare strutture gerarchizzate semplicemente indentando correttamente il testo:

!colore-elemento = #AAAAAA
p em
  :border-size 1px
  :border-color = !colore-elemento
  :padding 0.1em
  a
    :color black
    :border none

riducendo notevolmente il rischio di andare a sovrascrivere proprietà in maniera indiretta.

Ovviamente è anche possibile effettuare alcune operazioni matematiche basandosi sulle variabili precedentemente dichiarate:

!larghezza-totale = 960px
!larghezza-principale = 600px
#container
  :width = !larghezza-totale
  #main
    :width = !larghezza-principale
  #right
    :width = !larghezza-totale - !larghezza-principale

Se questo non ci basta è possibile includere classi all'interno di altri elementi, in modo da rendere il tutto il più possibile mantenibile, per esempio:

.clear-fix
  :clear both
#main
  .clear-fix
  :color purple

Oltre a queste ci sono molte altre cose interessanti, ma per ora mi interessava stuzzicare la vostra attenzione.

Altri contenuti che potrebbero interessarti

  • Nello sviluppo di siti web è preferibile operare in locale e trasferire il tutto sul server remoto solo una volta che si è ottimizzata la configurazione per lo scopo che ci si è prefissi. Ciò permette di avere una maggior velocità poiché non è necessario operare sul server trasferendo i file ogni...
  • Precedentemente avevo scritto una patch per views che pemetteva di andare ad indicare delle classi specifiche alle singole righe delle views. Considerato che modificare il codice di un modulo lo considero una delle cose più pericolose nonché sbagliate, e in considerazione del fatto dell'enorme...
  • Chi avesse iniziato ad utilizzare Drupal 7 si sarà senz'altro d'accordo che stanno nascendo dei temi di partenza molto sofisticati da cui partire per la realizzazione di temi, in particolare sta emergendo sempre più Omega 3. Questi temi, però possono avere necessità di essere estesi per aggiungere...
  • Ultimamente, lavorando con Omega in diversi siti, mi è capitato di dover fare un pò di "magie" per riuscire ad ottenere il risultato desiderato. Il problema principale che ho riscontrato è che le views permettono di aggiungere classi ai singoli field, al wrapper della vista stessa, o una classe...

Commenti

Ritratto di eliosh

Io preferisco LESS

E ci sta anche il moduletto per Drupal :D

http://drupal.org/project/less

Ritratto di NdK

Tutto bello, ma...

... come lo usiamo in Drupal ? :)

Ritratto di mavimo

Bhé, puoi sbizzarrirti..

..ci sono tati modi per usarli con Drupal, c'è persino un implementazione del tema Zen, non puoi fare quello che chiedevi sul forum di DI.org (configurazione dal pannello di controllo) se è quello che vuoi fare, per lo meno non tanto facilmente..

Ritratto di NdK

Peccato.

Ci speravo. Però magari studiando come lavora (perché al browser deve mandare un normale CSS...) posso estrarre idee interessanti.

Ritratto di mavimo

Puoi sfruttare l'idea,

Puoi sfruttare l'idea, comunque per portali in cui la struttura dei CSS rischia di diventare enorme (IMHO) facilita notevolmente il problema della scrittura e manutenzione del codice.

Invia nuovo commento





  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <h2> <h3> <h4> <table> <thead> <tbody> <tr> <th> <td>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Linee e paragrafi vanno a capo automaticamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.



Condividi contenuti