Menu

Interligne CSS (line-height) : sans unité, px, em, exemples

line-height définit la hauteur de chaque ligne de texte, et donc l'espace entre les lignes. Découvrez pourquoi un nombre sans unité est le bon choix par défaut, comment les valeurs en px, em et % s'héritent différemment, et les bonnes valeurs pour le texte courant et les titres.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

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

ValeurExempleHauteur de ligne pour un texte de 16pxHéritée par les enfants sous forme de
Nombre1.524pxLe nombre (1.5), recalculé pour chaque élément
Longueur24px, 1.5em, 1.5rem24pxLa longueur calculée (24px)
Pourcentage150%24pxLa longueur calculée (24px)
normalnormalSelon la police, souvent environ 1.2normal

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 em ou % sur un conteneur. Les enfants héritent d'une longueur fixe. Utilisez un nombre sans unité.
  • Une height fixe 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: 1 rend les paragraphes difficiles à lire. Commencez à 1.5.
  • Croire que line-height ajoute de l'espace entre les paragraphes. C'est le rôle de margin sur 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.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER