Comment centrer du texte en HTML
Utilisez la propriété CSS text-align: center sur l'élément qui contient le texte :
text-align centre chaque ligne de l'élément, y compris le contenu inline comme les liens, les images et les boutons. Elle est héritée : la définir sur un conteneur centre le texte de tout ce qu'il contient.
Sur le bloc, pas sur le span
text-align fonctionne sur les conteneurs de type bloc : <p>, <div>, titres, cellules de tableau. Sur un <span> ou un <a>, elle ne fait rien, car un élément inline n'est pas plus large que son texte et il n'y a pas d'espace pour centrer :
La solution est toujours la même : déplacez text-align: center sur le bloc parent.
Centrer le bloc, aligner les lignes à gauche
Pour un paragraphe de plusieurs lignes, un texte entièrement centré est difficile à lire, car chaque ligne commence à un endroit différent. Une pratique courante consiste à centrer le bloc dans la page et à garder son texte aligné au début :
margin-inline: auto centre un bloc qui a une largeur, text-align centre les lignes à l'intérieur. Le centrage de boîtes (avec flexbox, grid ou les marges) est présenté sur la page centrer une div.
Centrer un texte verticalement
text-align ne fonctionne qu'à l'horizontale. Pour centrer un texte verticalement dans une boîte, faites de la boîte un conteneur flex :
align-items: center centre verticalement, justify-content: center centre horizontalement, et text-align: center centre toujours les lignes les unes par rapport aux autres quand il y en a plusieurs. L'astuce de line-height ne marche que pour une seule ligne de texte dans une boîte de hauteur connue.
Toutes les valeurs de text-align
| Valeur | Résultat |
|---|---|
start (par défaut) | Les lignes commencent au bord de début : à gauche en français, à droite en arabe et en hébreu |
end | Les lignes finissent au bord de fin |
center | Lignes centrées |
justify | Lignes étirées jusqu'aux deux bords (sauf la dernière) |
left, right | Toujours à gauche ou toujours à droite, quelle que soit la langue |
Préférez start et end à left et right : elles s'inversent automatiquement pour les langues de droite à gauche, comme le montre la dernière boîte.
L'ancienne balise center
Les anciennes pages centrent le texte avec <center> ou avec un attribut align :
<center>Old way</center>
<p align="center">Also old</p>
Les deux sont obsolètes. Les navigateurs les affichent encore pour ne pas casser les vieux sites, mais ils sont invalides en HTML actuel et mélangent la mise en page au balisage. Utilisez text-align: center en CSS.
Faire un retrait de texte
HTML n'a pas de balise de retrait, et les espaces tapées sont réduites (voir espace en HTML). Les retraits relèvent du CSS :
| Retrait | CSS |
|---|---|
| Première ligne seulement (alinéa) | text-indent: 2em |
| Tout le bloc | padding-inline-start: 2em ou margin-inline-start: 2em |
| Retrait négatif (première ligne en saillie) | padding-inline-start: 2em; text-indent: -2em |
em lie le retrait à la taille de police, il suit donc la taille du texte.
Erreurs fréquentes
text-alignsur un élément inline. Mettez-la sur le bloc parent.- S'attendre à ce que
text-aligncentre une boîte. Elle centre le texte et le contenu inline, pas un bloc qui a une largeur. Utilisezmargin-inline: autoou flexbox pour les boîtes. - Utiliser
<center>oualign="center". Obsolète. Utilisez le CSS. - Centrer de longs paragraphes. Centrez les titres et les lignes courtes ; gardez le texte courant aligné au début.
- Faire un retrait avec
ou des espaces. Utiliseztext-indentou du padding.
Questions fréquentes
Comment centrer du texte en HTML ?
Ajoutez text-align: center à l'élément qui contient le texte, par exemple <p style="text-align: center"> ou une règle CSS comme h1 { text-align: center; }. Cela centre chaque ligne de texte et le contenu inline de cet élément.
Pourquoi text-align: center ne marche pas sur mon span ?
Un span est inline : il n'est pas plus large que son texte et il n'y a pas de place pour centrer. Mettez text-align: center sur le bloc parent (le <p> ou la <div> qui l'entoure), ou passez le span en display: block.
Comment centrer un texte verticalement ?
Faites du conteneur une boîte flex : display: flex; align-items: center; (ajoutez justify-content: center pour centrer aussi horizontalement). Pour une seule ligne dans une boîte de hauteur fixe, une line-height égale à la hauteur marche aussi.
La balise <center> est-elle encore valide ?
Non. <center> et l'attribut align="center" sont obsolètes. Les navigateurs les affichent encore pour les anciennes pages, mais le nouveau code doit utiliser text-align: center en CSS.
Comment faire un retrait de texte en HTML ?
Utilisez le CSS. text-indent: 2em met un retrait à la première ligne d'un paragraphe, et padding-inline-start: 2em ou margin-inline-start: 2em décale tout le bloc. Des espaces ou des dans le texte ne font pas un retrait fiable.