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
| Valore | Esempio | Altezza di riga per testo da 16px | Ereditato dai figli come |
|---|---|---|---|
| Numero | 1.5 | 24px | Il numero (1.5), ricalcolato per ogni elemento |
| Lunghezza | 24px, 1.5em, 1.5rem | 24px | La lunghezza calcolata (24px) |
| Percentuale | 150% | 24px | La lunghezza calcolata (24px) |
normal | normal | Dal font, spesso circa 1.2 | normal |
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
emo%su un contenitore. I figli ereditano una lunghezza fissa. Usa un numero senza unità. heightfisso 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: 1rende i paragrafi difficili da leggere. Parti da 1.5. - Aspettarsi che
line-heightaggiunga spazio tra i paragrafi. Per quello serve ilmarginsui 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.