Cosa fa il tag span
<span> racchiude un pezzo di testo dentro una riga così puoi dargli uno stile o trovarlo con JavaScript. È il gemello inline di <div>: non ha significato né un aspetto predefinito, e non inizia una nuova riga.
La frase resta su una sola riga. Cambiano solo le parole racchiuse.
div vs span
I due hanno lo stesso scopo (un contenitore senza significato) e si differenziano per come stanno nella pagina:
Il div spezza la frase in tre righe e si allarga su tutta la pagina; lo span resta nella frase e aderisce al suo testo.
<div> | <span> | |
|---|---|---|
| Visualizzazione | Blocco | Inline |
| Inizia una nuova riga | Sì | No |
| Larghezza | Tutta la larghezza disponibile | Quanto il suo contenuto |
width, height, margine verticale | Applicati | Ignorati |
| Può contenere | Qualsiasi cosa, anche blocchi | Solo testo ed elementi inline |
| Uso tipico | Sezioni, schede, contenitori di layout | Una parola o una frase dentro il testo |
Un'altra differenza: un <div> non è ammesso dentro un <p>, e se ci provi il browser chiude il paragrafo in anticipo, mentre uno span può andare ovunque vada il testo. Trovi di più nella pagina sul div.
Dare stile a uno span: cosa funziona e cosa no
Colore, font, sfondo e padding orizzontale funzionano tutti su uno span. La dimensione no: un elemento inline ignora width, height e i margini superiore e inferiore. Passalo a inline-block per dargli una dimensione tenendolo nella riga:
Il primo span è largo solo quanto le sue parole. Il secondo misura esattamente 120 per 40 pixel e sta comunque dentro la frase.
Span con JavaScript
Uno span è il segnaposto abituale per un valore che uno script compila, come un contatore o un nome utente:
Cambia solo il numero; il resto della frase resta intatto.
Quando un tag specifico è meglio di span
Uno span non ha significato, quindi uno screen reader lo legge come testo semplice. Quando le parole hanno un ruolo, usa il tag di quel ruolo e dagli lo stile che preferisci:
| Significato | Usa al posto di uno span |
|---|---|
| Testo importante | <strong> |
| Enfasi | <em> |
| Testo evidenziato o segnato | <mark> |
| Codice, un nome di file | <code> |
| Un tasto della tastiera | <kbd> |
| Una data o un orario | <time datetime="2026-09-24"> |
| Testo in un'altra lingua | <span lang="fr"> (span più l'attributo lang) |
La pagina sul grassetto spiega la differenza tra <strong>, <b>, <em> e <i>.
Errori comuni
- Impostare
widthsu un semplice span. Viene ignorato. Usadisplay: inline-block. - Mettere un div o un paragrafo dentro uno span. HTML non valido che spezza la riga. Sostituisci lo span esterno con un div.
- Span cliccabili. Come un div, uno span con
onclicknon si raggiunge con la tastiera. Usa un<button>o un link. - Uno span per ogni stile. Se interi paragrafi o sezioni hanno bisogno di uno stile, metti la classe sul
<p>o sul contenitore stesso invece di racchiuderne il testo in uno span.
Domande frequenti
Cos'è uno span in HTML?
<span> è un contenitore inline generico. Racchiude una parte di una riga di testo, come una parola, così il CSS o JavaScript possono selezionarla, e non ha né un aspetto né un significato propri.
Che differenza c'è tra div e span?
Un <div> è un blocco: inizia su una nuova riga e occupa tutta la larghezza. Uno <span> è inline: resta dentro la riga di testo ed è largo solo quanto il suo contenuto. Usa il div per raggruppare blocchi di contenuto, lo span per indicare parole dentro il testo.
Perché width non funziona sul mio span?
Gli elementi inline ignorano width, height e i margini verticali. Dai allo span display: inline-block per tenerlo nella riga accettando una dimensione, oppure display: block per farlo comportare come un div.
Come cambio il colore di una parola in HTML?
Racchiudi la parola in uno span con una classe e colorala in CSS: <span class="accent">word</span> con .accent { color: #2563eb; }. Per un caso isolato funziona anche <span style="color: #2563eb">word</span>.
Uno span può contenere un div?
No. Uno span può contenere solo contenuto inline come testo, link, immagini e altri span. I browser mostrano comunque un div dentro uno span, ma è HTML non valido e spezza la riga, quindi trasforma l'elemento esterno in un div.