Menu

CSS line-height: valori senza unità, px, em ed esempi

line-height imposta l'altezza di ogni riga di testo, e quindi lo spazio tra le righe. Scopri perché un numero senza unità è la scelta predefinita giusta, come i valori in px, em e % vengono ereditati in modo diverso, e i valori adatti per testo e titoli.

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

Cosa fa line-height

line-height imposta l'altezza di ogni riga di testo. La differenza tra quell'altezza e quella che serve al font viene divisa a metà e aggiunta sopra e sotto le lettere, quindi è così che controlli lo spazio tra le righe.

Tutti e tre i paragrafi usano un font da 16px. Le righe sono alte 16px, 24px e 32px.

Valori: senza unità, lunghezza, percentuale, normal

ValoreEsempioAltezza di riga per testo da 16pxEreditato dai figli come
Numero1.524pxIl numero (1.5), ricalcolato per ogni elemento
Lunghezza24px, 1.5em, 1.5rem24pxLa lunghezza calcolata (24px)
Percentuale150%24pxLa lunghezza calcolata (24px)
normalnormalDal font, spesso circa 1.2normal

La prima e la seconda riga danno lo stesso risultato su un solo elemento. La differenza si vede solo quando un figlio ha una dimensione del font diversa, ed è l'argomento della prossima sezione.

Perché senza unità è la scelta giusta

Un line-height di 1.5em o 150% viene convertito in pixel sul genitore, e i figli ereditano quei pixel. Un figlio con un font più grande riceve così righe più basse delle sue lettere. Un 1.5 senza unità viene ereditato come numero e moltiplicato per la dimensione del font di ogni figlio.

Entrambi i titoli vanno a capo su due righe. Il primo eredita righe da 21px per lettere da 32px, quindi le righe si sovrappongono. Il secondo riceve righe da 32 × 1.5 = 48px. Imposta line-height una volta sola su body come numero e nella maggior parte delle pagine non ti servirà più.

Prova i valori

Prova 1, 2, 30px, 200% e normal. Chrome riporta normal come parola e non come valore in pixel, perché la sua dimensione viene dal font.

Valori adatti per un testo leggibile

  • Testo dei paragrafi: da 1.4 a 1.6. Le righe più lunghe hanno bisogno di più interlinea, così l'occhio trova l'inizio della riga successiva.
  • Titoli: da 1.1 a 1.3. Un testo grande con interlinea 1.5 sembra fatto di righe separate invece che di un solo titolo.
  • Pulsanti ed etichette su una riga: da 1 a 1.25, con il padding per l'altezza.

Per l'accessibilità, il criterio di successo WCAG 1.4.12 richiede che una pagina funzioni ancora quando chi legge imposta l'interlinea a 1.5 volte la dimensione del font, quindi evita altezze fisse sui riquadri di testo che lo taglierebbero.

Centrare verticalmente una riga di testo

Quando un riquadro contiene esattamente una riga, un line-height uguale all'altezza del riquadro mette il testo al centro in verticale, perché lo spazio in più viene diviso in parti uguali sopra e sotto:

Smette di funzionare appena il testo va a capo su due righe, perché ogni riga diventa alta 40px. Per tutto ciò che può andare a capo, centra con flexbox, come mostrato nella pagina su come centrare un div.

La proprietà abbreviata font

La proprietà abbreviata font imposta insieme dimensione e interlinea con una barra:

body {
  font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}

La proprietà abbreviata reimposta ogni proprietà del font che non nomina (compreso line-height, che torna a normal se ometti la parte dopo la barra), quindi scrivila prima delle singole regole font-*.

Errori comuni

  • Usare em o % su un contenitore. I figli ereditano una lunghezza fissa. Usa un numero senza unità.
  • height fisso su un riquadro di testo. Quando il testo va a capo o chi legge aumenta la spaziatura, trabocca. Lascia che sia il contenuto a determinare l'altezza.
  • Testo troppo compatto. line-height: 1 rende i paragrafi difficili da leggere. Parti da 1.5.
  • Aspettarsi che line-height aggiunga spazio tra i paragrafi. Per quello serve il margin sui paragrafi.
  • Affidarsi a normal. Cambia da un font all'altro, quindi il layout si sposta quando cambi font.

Domande frequenti

Cosa fa line-height in CSS?

Imposta l'altezza di ogni riga di testo. Lo spazio in più rispetto all'altezza del font viene diviso in parti uguali sopra e sotto le lettere, quindi un line-height più grande significa più spazio tra le righe.

line-height deve avere un'unità?

Di solito no. Un valore senza unità come 1.5 viene moltiplicato per la dimensione del font di ciascun elemento, quindi resta proporzionale nei figli con una dimensione diversa. Un valore con unità viene calcolato una volta sola ed ereditato come lunghezza fissa.

Qual è un buon line-height per il testo?

Tra 1.4 e 1.6 per i paragrafi, e tra circa 1.1 e 1.3 per i titoli grandi. Le linee guida WCAG di livello AAA chiedono almeno 1.5 nei paragrafi.

Cos'è line-height: normal?

Il valore predefinito. Il browser usa un valore preso dalle metriche del font, di solito intorno a 1.2 ma diverso per ogni font, quindi non è prevedibile da un font all'altro.

Come si cambia l'interlinea in HTML?

HTML non ha un attributo per l'interlinea. Usa la proprietà CSS, per esempio <p style="line-height: 2;"> per l'interlinea doppia.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA