Menu

Espace en HTML :  , espaces multiples et white-space

Les navigateurs réduisent toute suite d'espaces en HTML à une seule. Découvrez comment ajouter des espaces avec &nbsp;, le rôle de l'espace insécable, comment conserver espaces et tabulations avec <pre> et white-space, et quand l'espacement CSS est le meilleur outil.

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

Ajouter des espaces en HTML

Tapez cinq espaces entre deux mots en HTML et le navigateur n'en affiche qu'une. Toute suite d'espaces, de tabulations et de sauts de ligne est réduite à une seule espace. Pour ajouter des espaces supplémentaires, utilisez l'entité d'espace insécable &nbsp;, une fois par espace :

&nbsp; convient pour quelques espaces dans une ligne de texte. Pour des écarts plus grands, ou de l'espace entre des éléments, utilisez le CSS, présenté plus bas.

Le rôle de  

&nbsp; est l'espace insécable (caractère U+00A0). Elle a deux effets :

  1. Elle n'est jamais réduite, donc trois d'entre elles font trois espaces.
  2. La ligne ne se coupe jamais à son niveau, donc les mots de chaque côté restent ensemble.

Le second effet est son vrai rôle. Les nombres et leurs unités, les initiales et les expressions courtes qui paraissent bizarres coupées sur deux lignes sont reliés par &nbsp; :

Dans la boîte grise, « 10 » et « km » tombent sur des lignes différentes. Dans la verte, ils ne peuvent pas être séparés. Pour garder ensemble un passage plus long, white-space: nowrap sur un span est plus simple qu'enchaîner des entités ; voir la page retour à la ligne.

Des entités d'espace de largeurs différentes

HTML a des caractères nommés pour des espaces plus larges ou plus étroites. Elles ne sont pas réduites non plus, ce qui les rend pratiques pour un espacement fin dans le texte :

EntitéNomLargeur
&nbsp;Espace insécableComme une espace normale
&ensp;Demi cadratinUn demi em
&emsp;CadratinUn em (la taille de police)
&thinsp;Espace fineUne fraction d'em, selon la police
&#8239;Espace fine insécableFine, et sans retour à la ligne

Le surlignage bleu montre la largeur de chaque espace. Seules &nbsp; et &#8239; empêchent aussi les retours à la ligne.

Conserver chaque espace : pre et white-space

Quand l'espacement fait partie du contenu (code, art ASCII, colonnes alignées, poésie), conservez tous les blancs au lieu d'ajouter des entités. L'élément <pre> le fait par défaut, et la propriété CSS white-space le fait pour n'importe quel élément :

Valeur de white-spaceEspacesSauts de ligneCoupe les lignes longues
normal (par défaut)RéduitesDeviennent des espacesOui
nowrapRéduitesDeviennent des espacesNon
preConservéesConservésNon
pre-wrapConservéesConservésOui
pre-lineRéduitesConservésOui

pre-wrap est généralement celle qu'il vous faut pour un texte utilisateur : elle conserve l'espacement tout en coupant les lignes sur les écrans étroits. pre garde les lignes telles quelles et fait défiler ou déborder à la place.

Les tabulations sont aussi conservées dans pre. Leur largeur est de 8 espaces par défaut et la propriété tab-size la change (tab-size: 4).

L'espacement avec CSS

La plupart des « il me faut un espace ici » relèvent en fait de la mise en page, et le CSS le fait mieux que les entités, car l'écart reste cohérent et se modifie à un seul endroit :

margin et padding espacent les éléments, gap espace les éléments d'un conteneur flex ou grid, letter-spacing et word-spacing espacent le texte lui-même. Pour mettre un retrait à la première ligne d'un paragraphe, utilisez text-indent, présenté sur la page centrer du texte.

L'écart entre éléments inline

Le revers de la réduction : un blanc entre deux éléments inline ou inline-block compte quand même comme une espace. Un saut de ligne entre deux boutons dans votre code source crée un petit écart entre eux :

La première paire a un écart dû au saut de ligne du code source. Dans un conteneur flex, les blancs entre les éléments sont ignorés, donc la seconde paire se touche. Utilisez flex et gap quand vous voulez contrôler l'espace exactement.

Erreurs fréquentes

  • Des chaînes de &nbsp; pour la mise en page. Elles cassent dès que la police ou la taille d'écran change. Utilisez margin, padding ou gap.
  • Taper des espaces en trop en attendant qu'elles s'affichent. Elles sont réduites. Utilisez &nbsp; ou white-space: pre-wrap.
  • Écrire &nbsp sans le point-virgule. Les navigateurs l'acceptent généralement, mais c'est invalide et cela échoue à certains endroits. Terminez toujours par ;.
  • Mettre des &nbsp; partout pour empêcher les coupures. Un long passage insécable déborde sur les téléphones. Ne reliez que ce qui doit rester ensemble.
  • Faire un retrait de paragraphe avec des espaces. Utilisez text-indent en CSS.

Questions fréquentes

Comment ajouter un espace en HTML ?

Une espace simple fonctionne telle quelle, mais les espaces en trop sont réduites à une seule. Pour en mettre plus, utilisez l'entité d'espace insécable &nbsp;, une par espace : a&nbsp;&nbsp;&nbsp;b. Pour les écarts de mise en page, utilisez plutôt margin, padding ou gap en CSS.

Que signifie &nbsp; en HTML ?

&nbsp; est une espace insécable. Elle ressemble à une espace normale, mais le navigateur ne coupe jamais la ligne à cet endroit et ne la réduit jamais : elle garde ensemble des mots comme 10&nbsp;km et permet d'ajouter des espaces supplémentaires.

Pourquoi HTML ignore mes espaces ?

HTML réduit les blancs : toute suite d'espaces, de tabulations et de sauts de ligne s'affiche comme une seule espace, et les blancs en début et en fin de ligne sont supprimés. Utilisez &nbsp;, <pre> ou la propriété CSS white-space pour les conserver.

Comment faire une tabulation en HTML ?

HTML n'a pas de tabulation visible en dehors du texte préformaté. Dans <pre> ou un élément avec white-space: pre, un caractère de tabulation est conservé et la propriété CSS tab-size fixe sa largeur. Pour mettre un retrait à un paragraphe, utilisez text-indent ou padding-inline-start en CSS.

Quelle est la différence entre &nbsp; et &emsp; ?

&nbsp; est aussi large qu'une espace normale. &ensp; fait un demi cadratin et &emsp; un cadratin (la largeur de la taille de police). &ensp; et &emsp; ne sont pas réduites, mais contrairement à &nbsp;, la ligne peut quand même se couper à leur niveau.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER