Menu

Centrare il testo in HTML: text-align, verticale e rientro

Centra il testo in HTML con la proprietà CSS text-align: center. Scopri dove metterla, perché non funziona su uno span, come centrare il testo in verticale in un riquadro, come allinearlo all'inizio, alla fine o su entrambi i bordi e come far rientrare i paragrafi.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

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

ValoreRisultato
start (predefinito)Le righe iniziano dal bordo iniziale: a sinistra in italiano, a destra in arabo ed ebraico
endLe righe finiscono sul bordo finale
centerRighe centrate
justifyRighe allungate fino a toccare entrambi i bordi (tranne l'ultima)
left, rightSempre 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:

RientroCSS
Solo la prima rigatext-indent: 2em
Tutto il bloccopadding-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-align su un elemento inline. Mettilo sul blocco genitore.
  • Aspettarsi che text-align centri un riquadro. Centra il testo e il contenuto inline, non un blocco con una larghezza. Per i riquadri usa margin-inline: auto o flexbox.
  • Usare <center> o align="center". Obsoleti. Usa il CSS.
  • Centrare paragrafi lunghi. Centra titoli e righe brevi; tieni il testo del corpo allineato all'inizio.
  • Fare rientri con &nbsp; o spazi. Usa text-indent o 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 &nbsp; nel testo non sono un rientro affidabile.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA