Ci vuole stile per scrivere… un foglio di stile!
Ultimamente mi è capitato di dover metter mano a fogli di stile realizzati da altri (non propriamente web designer) per apportare correzione e modifiche. Dio ce ne scampi!
Si sa, per la programmazione ci sono regole ben precise per la formattazione di una classe o di un modulo, o anche semplicemente di una pagina php, come ad esempio l’identazione, dove posizionare le parentesi grafe, l’uso delle maiuscole per i nomi di classe e metodi…(e questo è senza dubbio riduttivo).
Ma per i fogli di stile, più comunemente detti CSS?
Forse ci sono delle regole non dette, forse queste regole sono seguite da una ristretta cerchia di adepti, ma girovagando un po’ sui codici sorgenti di alcuni siti web, ho sempre notato che molto spesso la formattazione e la struttura di un foglio di stile è più o meno lasciata al caso, o meglio (o peggio), si nota un pattern abbastanza preciso. Sembra infatti che dopo una iniziale strutturazione dei vari selettori, vi sia un vero e proprio append delle classi che servono al momento.
Ciò può essere dettato da ovvie ragioni di tempo, ma a lungo andare produce a mio parere gravissimi effetti collaterali: ci si trova davanti a CSS lunghi centinaia e centinaia di righe, dove selettori ID si intervallano a selettori di classe, definizioni di layout sono sparse qua e là, in mezzo a semplici definizioni stilistiche di una riga (alzi la mano chi non ha mai visto la classe .red { color: #FF0000 } o simili). Senza contare il rischio più grande, ovvero sovrascrivere definizioni con nuovi comportamenti, a rischio di pericolosi cambiamenti dell’impaginazione. E chi poi verrà a doversi scontrare con quanto prodotto con poca attenzione per l’ordine e la pulizia, si troverà a non capire più dove metter mano.
E’ venuto il momento di fare un po’ di ordine: vi propongo 10 consigli, o meglio 10 buone pratiche per stendere un buon foglio di stile.
- Definite le proprietà a partire dall’alto iniziando con le proprietà del body e poi a scendere
- Definite per ogni sezione di impaginazione prima gli elementi box (div) e poi i selettori di elementi inline (class), a titolo di esempio in base anche al punto precedente:
body{ ... }
#wrapper{ ... }
#header{ .. }
#header .image{ ... }
#header ul li { ... }
#content{ ... }
#content ul li{ ... }
#footer{ .. }
#footer .image{ ... }
#footer .link{ ... }
- Una volta scelto il modo di scrivere selettori con una o più definizioni, mantenetela, non mischiate modi diversi di formattazione come in questo esempio:
#header{
width: 960px;
height: 120px;
}
#content{ widht: 65%; float: left; color: #333333; background-color: #FEFEFE; }
#footer
{
clear: left
}
- Utilizzate per scopi di impaginazione i selettori id e per tutto ciò che verrà utilizzato esclusivamente una volta sola nella pagina
- Se ci sono troppi div innestati e nel css vi trovate a dover scrivere cose del tipo:
#div1 #sub_div1 #sub_sub_div1{ ... }
riflettete: probabilmente c’è una soluzione migliore - Definite dei selettori (di classe) utilità da inserire in fondo alla pagina, come ad esempio:
/* utilities */
.floatleft{ float: left}
.clearleft{ clear: left }
... - Definite in una apposita sezione lo stile per i tag di contenuto generici:
...
p{
margin: 0;
padding: 0;
font-size: 1.2em;
}
cite{
font-style: italic;
font-size: 0.9em;
}
a: link, a:visited{
color: #3333FF;
background-color: inherit;
text-decoration: underline;
}
a: hover, a: focus, a:active{
color: #3333FF;
background-color: inherit;
text-decoration: underline;
}
... - Raggrupate il più possibile caratteristiche comuni per evitare di duplicare codice, utilizzando l’eredità in cascata tra selettori (con parsimonia)
Ad esempio questo è un esempio di come a mio avviso non vanno fatte le cose:
...
#content ul li{
font-family: Verdana, Arial, sans-serif;
line-height: 1.5em;
font-size: 1.1em;
line-height: 1.5em;
margin: 0.5em 0;
list-style-type: square;
}
#content ol li{
font-family: Verdana, Arial, sans-serif;
line-height: 1.5em;
font-size: 1.1em;
line-height: 1.5em;
margin: 0.5em 0;
}
...
Scriverei piuttosto così:
...
#content ul li, #content ol li{
font-family: Verdana, Arial, sans-serif;
line-height: 1.5em;
font-size: 1.1em; line-height: 1.5em;
margin: 0.5em 0;
}
#content ul li{
list-style-type: square;
}
...
- Utilizzate una riga di commento per separare le varie sezioni di un css, non costano nulla al momento, ma possono tornare davvero molto utili quando dopo diverso tempo bisogna rimetterci mano.
- Se dovete modificare pesantemente un foglio di stile creato precedentemente da altri, e lo trovate assolutamente complicato, l’ultimo consiglio, ma non per questo meno importante è il solito: “CTRL+A” e “Canc”. Ripartire da capo a volte è la soluzione migliore ;D
Questi sono semplici consigli, che ho imparato a mettere in pratica solo con tanti, ma tanti, fogli di stile sotto mano. Provate e sperimentate: solo sbagliando si impara, e magari la prossima volta mi scrivete voi altre best practice!



Marco scrive: [ 26 giugno 2008 alle 10:26 am ]
Complimenti, un altro ottimo articolo. Mi duole ammettere che anch’io sono uno di quelli che scrive i CSS un po come capita.
Vabbe, vedro di prendere esempio dai tuoi consigli
Un bacio
Simone scrive: [ 2 luglio 2008 alle 5:35 pm ]
Eri proprio stanca di lavorare sui CSS altrui quando hai deciso di scrivere questo articolo, vero?
Purtroppo hai ragione, anche chi regolarmente scrive codice molto pulito e chiaro sembra dimenticarsi del buon senno quando scrive un CSS. Immagino che molti comincino a scriverlo pensando a “quel file di poche righe che non val la pena di tenere troppo ordinato”.
Ottimi i consigli che hai raccolto. Auguro molta visibilità a questo articolo
Cristian scrive: [ 7 luglio 2008 alle 3:58 pm ]
Ciao Manu,
davvero un bel’articolo. Oggi come oggi son in molti che si ritengono webdesigner o altri nomi roboanti,vedi webmaster, in verità son degli smanettoni del codice che se pur con tantissima volontà realizzano bei lavori ma che nella fase di aggiornamento della grafica del sito risulta davvero un’impresa capire cosa ha fatto. Una pratica che alcuni utilizzano è quella di fare le zuppe di codice mischiare css e xhtm per correggere comportamneti anomali in alcune parti. Risultato difficoltà nell’aggiornare i contenuti. Anche per quelli che ne sanno ogni tanto, vuoi per la fretta, scatta la duplicazione del codice o la mancanza di commenti quindi l’articolo scritto ha ancora maggior valenza.
Mi associo all’augurio di Simone sul fatto che l’articolo abbia notorietà !
Arianna scrive: [ 14 luglio 2008 alle 1:24 pm ]
Ciao! Utilizzerò questo tuo completissimo articolo per far capire al mio titolare che Web Designers non ci si improvvisa un mattino in 4 ore!
Grazie mille e…. incrociamo e dita per noi!
admin scrive: [ 14 luglio 2008 alle 2:13 pm ]
Eh Eh, grazie a tutti per i commenti!
Il commento di Arianna non fa altro che evidenziare quanto sia sottovalutato il nostro lavoro di web designer.
D’altronde, molti pensano che al giorno d’oggi per fare un sito, non ci voglia proprio niente…della serie, cosa vuoi che sia lo faccio fare a mio nipote che sta sempre sui computer.
Questo genere di frase non è fantasia, ma è la realtà. E questo spiega anche come mai molte piccole imprese abbiano siti web che definire brutti è da educati.
Si dovrebbe far capire che un investimento iniziale in termini di qualità, è quanto invece di meglio ci sia, poichè garantisce un ritorno da parte degli utenti – che business oriented sono sempre potenziali clienti – e dall’altro aiuta ad emergere dalla concorrenza, visto che sul web basta un click per andare a parare da un’altra parte.
E se il sito è usabile, piacevole e intrattiene senza banner sparaflashanti, allora l’utente ci resta, e ci ritorna.
E voi direte, ma cosa centra questo con i CSS?
Eh.. centra eccome!
Centra tutto con il markup della pagina, con istruzioni css compatibili con i diversi browser, ecc…
No, non ci si improvvisa web designer.
Ci vuole la creatività del momento, ma senza studio, impegno e attenzione ai nuovi trend del web design, si è tagliati fuori, e basta un click del mouse.
Flavio scrive: [ 24 luglio 2008 alle 9:22 pm ]
Finalmente l’ho potuto leggere per bene.
quello che non faccio e che incasina (x il mio gusto personale, poi è da vedere) il css è il fatto che non uso molte forme contratte.
Direi che sono tutti principi che applico
Mi sa che tornerò anche a spezzettare in più css, layout, tipography e cose cosi.
Quello che soffre il css è una verticalità esagerata dei contenuti che sono a pari livello informativo, non so se mi spiego.
Tieni presente che sono un pò delirante, sto digerendo una pizzetta dell’Iper un pò radioattiva.