Contro il markup semantico?
Monday, September 19th, 2011In questi ultimi tempi ho sentito parlare spesso dei pro e i contro dell’uso delle classi semantiche nell’HTML1.
L’approccio predicato fino ad ora era sempre stato più o meno questo: non usare nomi come rosso o destra per le classi perché così facendo leghi l’aspetto visuale al markup, che dev’essere il più possibile semantico, ovvero, deve avere un significato slegato dalla presentazione. Una cosa condivisibile, almeno finché si tratta di usare una classe come rosso.
Nicole Sullivan2 sostiene invece che questo approccio, come diversi altri, va ripensato e che l’uso di classi semantiche per i CSS non è una buona idea. Più precisamente, se vogliamo massimizzare il riutilizzo di stili e classi in contesti diversi, i nomi devono essere in qualche misura astratti, slegati dal contenuto e quindi necessariamente non semantici.
Anch’io mi sono convinto di questa cosa: usare una classe come fattura è sbagliato esattamente come rosso, né più né meno. Ogni layer di un sistema deve parlare il proprio linguaggio e il linguaggio dei CSS riguarda l’aspetto visivo. Di conseguenza anche le classi devono rispettare questa caratteristica. Ad es. al posto di rosso possiamo usare, che so, enfasi o accent-color.
Questa cosa va di pari passo con l’altra pratica considerata un antipattern, la cosiddetta “classite”, ovvero, un abuso delle classi. Nel momento in cui dobbiamo trovare i concetti visivi giusti per guidarci nella scelta dei nomi, diventa naturale usare più classi con meno properties3. Questo porta ad avere elementi con più classi associate, una per ogni tratto visivo che vogliamo applicare.
Basta usare questo approccio per qualche tempo per capire che i CSS risultanti sono molto più leggeri e molto più riutilizzabili anche se non è sempre facile trovare dei nomi per le classi che soddisfino al 100%.
- Our (CSS) Best Practices Are Killing us ↩
- Almeno, questo è l’effetto che ho visto sul mio modo di lavorare ↩