Ce que fait line-height
line-height définit la hauteur de chaque ligne de texte. La différence entre cette hauteur et celle dont la police a besoin est coupée en deux et ajoutée au-dessus et en dessous des lettres : c'est ainsi que vous contrôlez l'espace entre les lignes.
Les trois paragraphes utilisent une police de 16px. Les lignes mesurent 16px, 24px et 32px de haut.
Les valeurs : sans unité, longueur, pourcentage, normal
| Valeur | Exemple | Hauteur de ligne pour un texte de 16px | Héritée par les enfants sous forme de |
|---|---|---|---|
| Nombre | 1.5 | 24px | Le nombre (1.5), recalculé pour chaque élément |
| Longueur | 24px, 1.5em, 1.5rem | 24px | La longueur calculée (24px) |
| Pourcentage | 150% | 24px | La longueur calculée (24px) |
normal | normal | Selon la police, souvent environ 1.2 | normal |
Les deux premières lignes donnent le même résultat sur un élément. La différence n'apparaît que lorsqu'un enfant a une autre taille de police, ce que montre la section suivante.
Pourquoi sans unité est le bon choix par défaut
Un interligne de 1.5em ou 150% est converti en pixels sur le parent, et les enfants héritent de ces pixels. Un enfant avec une police plus grande obtient alors des lignes plus basses que ses lettres. Un 1.5 sans unité est hérité comme nombre et multiplié par la taille de police de chaque enfant.
Les deux titres passent sur deux lignes. Le premier hérite de lignes de 21px pour des lettres de 32px, et ses lignes se chevauchent. Le second obtient des lignes de 32 × 1,5 = 48px. Définissez line-height une fois sur body sous forme de nombre, et la plupart des pages n'en auront plus jamais besoin.
Essayez des valeurs
Essayez 1, 2, 30px, 200% et normal. Chrome affiche normal tel quel plutôt qu'une valeur en pixels, car sa taille vient de la police.
De bonnes valeurs pour un texte lisible
- Texte courant : 1.4 à 1.6. Les lignes longues demandent plus d'interligne pour que l'œil retrouve le début de la ligne suivante.
- Titres : 1.1 à 1.3. Un grand texte avec un interligne de 1.5 ressemble à des lignes séparées plutôt qu'à un seul titre.
- Boutons et étiquettes d'une ligne : 1 à 1.25, avec du padding pour la hauteur.
Pour l'accessibilité, le critère de succès 1.4.12 des WCAG exige qu'une page reste utilisable quand un lecteur règle l'interligne à 1,5 fois la taille de police : évitez donc les hauteurs fixes sur les boîtes de texte qui le couperaient.
Centrer verticalement une ligne de texte
Quand une boîte contient exactement une ligne, un line-height égal à la hauteur de la boîte place le texte au milieu verticalement, car l'espace en plus est réparti à parts égales au-dessus et en dessous :
Cela ne marche plus dès que le texte passe sur deux lignes, car chaque ligne fait alors 40px de haut. Pour tout ce qui peut passer à la ligne, centrez plutôt avec flexbox, comme sur la page pour centrer une div.
Le raccourci font
Le raccourci font définit la taille et l'interligne ensemble, séparés par une barre oblique :
body {
font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}
Le raccourci remet à zéro toutes les propriétés de police qu'il ne mentionne pas (y compris line-height, qui revient à normal si vous omettez la partie après la barre oblique) : écrivez-le donc avant les règles font-* individuelles.
Erreurs courantes
- Utiliser
emou%sur un conteneur. Les enfants héritent d'une longueur fixe. Utilisez un nombre sans unité. - Une
heightfixe sur une boîte de texte. Quand le texte passe à la ligne ou que le lecteur agrandit l'espacement, il déborde. Laissez le contenu définir la hauteur. - Un texte courant trop serré.
line-height: 1rend les paragraphes difficiles à lire. Commencez à 1.5. - Croire que
line-heightajoute de l'espace entre les paragraphes. C'est le rôle demarginsur les paragraphes. - Compter sur
normal. Il change d'une police à l'autre, et la mise en page bouge quand la police change.
Questions fréquentes
À quoi sert line-height en CSS ?
Il définit la hauteur de chaque boîte de ligne de texte. L'espace en plus de la hauteur propre de la police est réparti à parts égales au-dessus et en dessous des lettres, donc un line-height plus grand signifie plus d'espace entre les lignes.
Faut-il mettre une unité à line-height ?
En général non. Une valeur sans unité comme 1.5 est multipliée par la taille de police de chaque élément, elle reste donc proportionnelle chez les enfants d'une autre taille. Une valeur avec unité est calculée une fois et héritée comme une longueur fixe.
Quel interligne choisir pour le texte courant ?
Entre 1.4 et 1.6 pour les paragraphes, et autour de 1.1 à 1.3 pour les grands titres. Le niveau AAA des WCAG demande au moins 1.5 dans les paragraphes.
Que signifie line-height: normal ?
C'est la valeur par défaut. Le navigateur utilise une valeur tirée des métriques de la police, en général autour de 1.2 mais différente pour chaque police, donc imprévisible d'une police à l'autre.
Comment changer l'interligne en HTML ?
Le HTML n'a pas d'attribut d'interligne. Utilisez la propriété CSS, par exemple <p style="line-height: 2;"> pour un double interligne.