Come centrare il testo in HTML
Usa la proprietà CSS text-align: center sull'elemento che contiene il testo:
text-align centra ogni riga dentro l'elemento, compresi gli elementi inline come link, immagini e pulsanti. Viene ereditata, quindi impostarla su un contenitore centra il testo di tutto quello che contiene.
Mettila sul blocco, non sullo span
text-align funziona sui contenitori a blocco: <p>, <div>, titoli, celle di tabella. Su uno <span> o un <a> non fa nulla, perché un elemento inline è largo solo quanto il suo testo e non c'è spazio in cui centrarlo:
La soluzione è sempre la stessa: sposta text-align: center sul blocco genitore.
Blocco al centro, righe allineate all'inizio
Per un paragrafo di più righe, il testo tutto centrato è difficile da leggere perché ogni riga inizia in un punto diverso. Uno schema comune è centrare il blocco nella pagina e tenere il testo allineato all'inizio:
margin-inline: auto centra un blocco che ha una larghezza, text-align centra le righe al suo interno. Centrare i riquadri (con flexbox, grid o margini) è spiegato nella pagina su come centrare un div.
Centrare il testo in verticale
text-align funziona solo in orizzontale. Per centrare il testo in verticale dentro un riquadro, trasforma il riquadro in un contenitore flex:
align-items: center centra in verticale, justify-content: center centra in orizzontale, e text-align: center continua a centrare le righe tra loro quando sono più di una. Il trucco del line-height funziona solo per una riga di testo in un riquadro di altezza nota.
Tutti i valori di text-align
| Valore | Risultato |
|---|---|
start (predefinito) | Le righe iniziano dal bordo iniziale: a sinistra in italiano, a destra in arabo ed ebraico |
end | Le righe finiscono sul bordo finale |
center | Righe centrate |
justify | Righe allungate fino a toccare entrambi i bordi (tranne l'ultima) |
left, right | Sempre a sinistra o sempre a destra, qualunque sia la lingua |
Preferisci start e end a left e right: si invertono da soli per le lingue scritte da destra a sinistra, come mostra l'ultimo riquadro.
Il vecchio tag center
Le pagine vecchie centrano il testo con <center> o con un attributo align:
<center>Old way</center>
<p align="center">Also old</p>
Entrambi sono obsoleti. I browser li mostrano ancora perché i vecchi siti non si rompano, ma non sono validi nell'HTML attuale e mescolano l'impaginazione al markup. Usa text-align: center nel CSS.
Far rientrare il testo
L'HTML non ha un tag per il rientro, e gli spazi digitati si comprimono (vedi spazi in HTML). I rientri si fanno con il CSS:
| Rientro | CSS |
|---|---|
| Solo la prima riga | text-indent: 2em |
| Tutto il blocco | padding-inline-start: 2em o margin-inline-start: 2em |
| Sporgente (prima riga fuori) | padding-inline-start: 2em; text-indent: -2em |
em lega il rientro alla dimensione del font, quindi cresce insieme al testo.
Errori comuni
text-alignsu un elemento inline. Mettilo sul blocco genitore.- Aspettarsi che
text-aligncentri un riquadro. Centra il testo e il contenuto inline, non un blocco con una larghezza. Per i riquadri usamargin-inline: autoo flexbox. - Usare
<center>oalign="center". Obsoleti. Usa il CSS. - Centrare paragrafi lunghi. Centra titoli e righe brevi; tieni il testo del corpo allineato all'inizio.
- Fare rientri con
o spazi. Usatext-indento il padding.
Domande frequenti
Come centro il testo in HTML?
Aggiungi text-align: center all'elemento che contiene il testo, per esempio <p style="text-align: center"> o una regola CSS come h1 { text-align: center; }. Centra ogni riga di testo e ogni contenuto inline dentro quell'elemento.
Perché text-align: center non funziona sul mio span?
Uno span è inline, quindi è largo solo quanto il suo testo e non c'è spazio in cui centrarlo. Metti text-align: center sul blocco genitore (il <p> o il <div> che lo contiene), oppure rendi lo span display: block.
Come centro il testo in verticale?
Trasforma il contenitore in un flex box: display: flex; align-items: center; (aggiungi justify-content: center per centrare anche in orizzontale). Per una sola riga in un riquadro di altezza fissa funziona anche un line-height uguale all'altezza.
Il tag <center> è ancora valido?
No. <center> e l'attributo align="center" sono obsoleti. I browser li mostrano ancora per le pagine vecchie, ma il codice nuovo deve usare text-align: center nel CSS.
Come faccio rientrare il testo in HTML?
Usa il CSS. text-indent: 2em fa rientrare la prima riga di un paragrafo, e padding-inline-start: 2em o margin-inline-start: 2em fanno rientrare tutto il blocco. Spazi o nel testo non sono un rientro affidabile.