23 luglio 2026
line-height: perché 1.5 e 150% non sono la stessa cosa
Due sintassi che sembrano equivalenti, ma cambiano completamente il modo in cui il browser calcola ed eredita l’interlinea.
In CSS, line-height impostato come numero senza unità (es. 1.5) e come percentuale (es. 150%) può produrre risultati diversi, soprattutto con font-size che variano tra componenti o con tipografia fluida. La differenza sta in quando e dove avviene il calcolo: per-elemento nel caso unitless, “congelato” e poi ereditato nel caso percentuale. Vediamo cosa significa in pratica e quale scelta è più robusta.
In CSS è facile dare per scontato che:
line-height: 1.5;
sia equivalente a:
line-height: 150%;
Visivamente, spesso sembra vero. Finché non inizi a mischiare dimensioni di testo diverse (heading, didascalie, piccoli paragrafi) o finché non adotti una tipografia fluida con clamp()/viewport units. A quel punto possono comparire spaziature “strane”: blocchi troppo ariosi o troppo compatti, spesso proprio nelle aree con testo più piccolo o più grande.
La causa è una differenza fondamentale: numero unitless e percentuale non vengono calcolati e ereditati nello stesso modo.
Numero senza unità: il moltiplicatore che si ricalcola per ogni elemento
Quando scrivi:
body { line-height: 1.5; }
quel 1.5 non è una lunghezza. È un fattore di scala.
- Il browser lo tratta come un valore “relativo” al
font-sizedell’elemento. - Quando un elemento ha un font-size diverso dal genitore, il calcolo dell’interlinea viene rifatto per quell’elemento.
In pratica:
- Un paragrafo da
24pxavràline-heightcalcolata a36px. - Un testo da
14pxavràline-heightcalcolata a21px.
L’idea chiave: il valore ereditato è il moltiplicatore, non un numero in pixel già risolto. Questo rende il comportamento molto coerente in un sistema tipografico con scale diverse.
Percentuale: la linea viene “risolta” prima e poi ereditata come valore calcolato
Quando scrivi:
body { line-height: 150%; }
la percentuale viene calcolata rispetto al font-size dell’elemento su cui la imposti (qui: body). Fin qui tutto normale.
Il problema emerge nell’ereditarietà: ai figli non viene ereditata la percentuale “150%” come moltiplicatore, ma un valore calcolato (una lunghezza, di fatto).
Quindi se sul body il calcolo produce, ad esempio, 24px di interlinea (perché il body ha un certo font-size), quel 24px può finire per essere riutilizzato anche da elementi discendenti anche se hanno un font-size diverso.
Risultato tipico:
- su testo piccolo l’interlinea risulta troppo grande (se eredita un valore “pensato” per un font più grande);
- su testo grande l’interlinea può risultare troppo stretta (se eredita un valore “pensato” per un font più piccolo);
- con tipografia fluida, il fenomeno si nota di più perché i numeri intermedi diventano meno intuitivi e cambiano al variare della viewport.
Come accorgersene (debug rapido)
Quando qualcosa “non torna”, i DevTools aiutano subito: seleziona elementi con dimensioni di font diverse e controlla il line-height effettivo.
- Con
line-height: 1.5, vedrai valori calcolati diversi in base alfont-sizedi ciascun elemento. - Con
line-height: 150%, potresti vedere lo stesso valore calcolato ripetersi dove ti aspetteresti proporzioni diverse.
Quale usare nella pratica?
Per un layout tipografico robusto, soprattutto in design system o UI componentizzate, la regola pratica è semplice:
- Preferisci
line-heightunitless (es.1.4,1.5,1.6) come impostazione di base.- È più “elastica”: si adatta automaticamente quando cambia il font-size.
- È più prevedibile quando componenti e varianti tipografiche convivono.
La percentuale può avere senso in casi specifici, ma è più facile che introduca effetti collaterali quando l’ereditarietà entra in gioco.
Sintesi conclusiva
line-height: 1.5 e line-height: 150% non sono intercambiabili: il primo si comporta come un moltiplicatore ereditabile che viene ricalcolato per ogni elemento, il secondo tende a trasformarsi in un valore già risolto che può essere ereditato “così com’è”.
Se l’obiettivo è mantenere proporzioni coerenti tra testi di dimensioni diverse (soprattutto con tipografia fluida), impostare un line-height senza unità è la scelta più sicura e stabile.