Comment souligner un texte en HTML
Il y a deux façons : la balise <u>, ou la propriété CSS text-decoration: underline. Les deux tracent la même ligne :
Le problème de tout soulignement, c'est la troisième ligne : les lecteurs s'attendent à ce qu'un texte souligné soit un lien, et cliquent dessus. Ne soulignez un texte simple que s'il y a une raison claire.
Le sens de la balise u
<u> n'est pas un bouton « souligner » générique. En HTML actuel, elle désigne un texte avec une annotation non explicite : une marque qui dit « il y a quelque chose de particulier ici » sans dire quoi. Les vrais usages courants :
- signaler une faute d'orthographe (comme le fait un traitement de texte, souvent avec une ligne rouge ondulée),
- marquer les noms propres dans un texte chinois, qui est une convention typographique là-bas.
Pour la mise en valeur, utilisez <em> ou <strong> (voir le gras), et pour les titres de livres, <cite>. Si vous voulez seulement l'apparence, utilisez le CSS.
Barrer : s et del
HTML a deux balises qui tracent une ligne à travers le texte, et elles ne veulent pas dire la même chose :
| Balise | Signification | Usage typique |
|---|---|---|
<s> | N'est plus exact ou pertinent, gardé pour le contexte | Ancien prix, type de billet épuisé |
<del> | Supprimé du document | Modifications, journaux des changements, tâches terminées d'une liste |
Marquer des modifications avec ins et del
<ins> est le partenaire de <del> : il marque un texte ajouté. Les navigateurs le soulignent par défaut. Les deux acceptent datetime (le moment du changement) et cite (une URL qui l'explique) :
Ce style rouge et vert est l'apparence familière d'un diff. text-decoration: none sur ins retire le soulignement par défaut pour qu'il ne ressemble pas à un lien.
Souligner et barrer avec CSS
text-decoration gère la partie visuelle pour n'importe quel élément : elle accepte une couleur et un style, et text-decoration-thickness fixe l'épaisseur. Pour les lignes purement décoratives, c'est le bon outil :
Retirer le soulignement des liens, le décalage du soulignement et les autres détails de text-decoration sont sur la page souligner en CSS.
Accessibilité
La prise en charge de <s>, <del> et <ins> par les lecteurs d'écran est inégale : certains les annoncent comme supprimés ou insérés, beaucoup les lisent comme du texte normal, si bien qu'un auditeur peut entendre « Prix 49 dollars 29 dollars » sans savoir lequel est le prix actuel. Quand la différence compte, dites-la aussi avec des mots, par exemple avec un texte masqué visuellement mais lu à voix haute, ou simplement « Avant 49 ».
Erreurs fréquentes
- Souligner un texte qui n'est pas un lien. Les lecteurs essaieront de cliquer. Pour mettre en évidence, utilisez plutôt le gras, la couleur ou un fond.
- Utiliser
<u>pour mettre en valeur. Utilisez<em>ou<strong>. - Utiliser
<strike>. Elle est obsolète. Utilisez<s>,<del>outext-decoration: line-through. - Utiliser
<s>pour un contenu supprimé dans l'historique d'un document. C'est le rôle de<del>, qui peut aussi enregistrer quand cela s'est produit. - Compter sur la ligne seule pour porter le sens. Beaucoup de lecteurs d'écran ne l'annoncent pas.
Questions fréquentes
Comment souligner un texte en HTML ?
Entourez-le de <u>, ou appliquez text-decoration: underline en CSS. N'utilisez <u> que pour son sens précis (comme signaler un mot mal orthographié) ; pour un soulignement purement visuel, utilisez le CSS sur un <span> ou sur l'élément lui-même.
Comment barrer un texte en HTML ?
Utilisez <s> pour un texte qui n'est plus exact, comme un ancien prix, et <del> pour un texte supprimé lors d'une modification. Les deux tracent une ligne à travers le texte. En CSS, text-decoration: line-through fait la même chose visuellement.
La balise <u> est-elle obsolète ?
Non. <u> a été dépréciée en HTML 4 mais est revenue en HTML5 avec un nouveau sens : un texte avec une annotation non textuelle, comme une faute d'orthographe ou un nom propre dans un texte chinois. Elle est valide, mais rarement le bon choix.
Qu'est devenue la balise <strike> ?
<strike> est obsolète. Les navigateurs l'affichent encore barrée, mais ce n'est pas du HTML valide. Utilisez <s> ou <del> selon le sens, ou text-decoration: line-through.
Quelle est la différence entre <s> et <del> ?
<s> marque un texte qui n'est plus pertinent ou correct mais qu'on garde pour le contexte, comme un prix barré. <del> marque un texte supprimé du document, souvent à côté d'un <ins> qui montre ce qui l'a remplacé, et peut porter les attributs datetime et cite.