L'argomento <span>
è stato trattato un po' di tempo in
questo
post di Eric Meyer. Sostiene che il tag <b>
ha la stessa valenza
semantica dello span
, ovvero nessuna, e si presenta decisamente più leggero in termine di caratteri.
La dichiarazione di Meyer presa potrà sembrare provocatoria, ma nel suo contesto non lo è affatto, dato che si trattava di avere un aggancio all'interno di un elemento h5
che si presenta naturalmente in grassetto. A livello presentazionale quindi l'uso di uno span
o di un b
all'interno di un titolo non fa differenza, mentre in generale lo span non ha influenza nella presentazione, mentre il tag b
sì, dato che si presenta in grassetto anche in assenza di CSS.
La questione span è stata poi ripresa di recente in Is it ok to use span? che contiene alcuni spunti interessanti.
Se posso dire la mia su questo elemento che è spesso sottovalutato o abusato: lo span è un elemento inline totalmente neutro che non ha valenza semantica né presentazionale. Quattro le cose da tenere in conto:
- Lo span non andrebbe mai usato quando si può usare al suo posto un elemento che abbia valenza semantica (per esempio em, strong, label, cite ecc...).
- Quando non esiste nessun altro elemento adeguato, lo span abbinato con un uso intelligente di classi e/o id può rivelarsi la soluzione migliore.
- Le classi o gli id vanno pensati per il loro scopo, e non per la presentazione (usare ad esempio class="warning" invece di
class="red"
). - Non c'è niente di male ad usare gli span anche per scopi presentazionali: l'importante è considerarli come ultima spiaggia e non abusarne.
L'abuso dello span (punto 1) è un errore comune di molti. L'uso di classi e id con connotazione semantica e non presentazionale (punto 2) in realtà ha carattere generale e si può estendere a tutti gli elementi e non solo allo span. Quanto all'ultimo punto, quando possibile è importante usare classi e id che non tradiscano la presentazione.