Mise à jour 2021 : text-underline-offset
fonctionne désormais dans presque tous les principaux navigateurs et dans les versions les plus récentes (IE11 n'est pas disponible) : https://caniuse.com/?search=text-underline-offset
Mise à jour 2019 : Le groupe de travail CSS a publié un projet pour décoration de texte niveau 4 qui ajouterait une nouvelle propriété text-underline-offset
(ainsi que text-decoration-thickness
) pour permettre de contrôler l'emplacement exact d'un soulignement. À l'heure où nous écrivons ces lignes, il s'agit d'une version préliminaire qui n'a été mise en œuvre par aucun navigateur, mais il semble qu'elle finira par rendre la technique ci-dessous obsolète.
Réponse originale ci-dessous.
Le problème de l'utilisation de border-bottom
directement est que même avec padding-bottom: 0
le soulignement a tendance à être trop fort loin du texte pour avoir l'air bien. Nous n'avons donc pas encore un contrôle total.
Une solution qui vous permet d'avoir une précision au pixel près est d'utiliser la fonction :after
pseudo-élément :
a {
text-decoration: none;
position: relative;
}
a:after {
content: '';
width: 100%;
position: absolute;
left: 0;
bottom: 1px;
border-width: 0 0 1px;
border-style: solid;
}
En modifiant le bottom
(les nombres négatifs sont acceptés), vous pouvez positionner le soulignement exactement où vous le souhaitez.
Un des problèmes de cette technique dont il faut se méfier est qu'elle se comporte un peu bizarrement avec les retours à la ligne.
2 votes
Ce n'est pas exactement ce que vous demandiez, mais c'était une lecture intéressante sur le sujet : CSS Design : Soulignements personnalisés
0 votes
La distance est déterminée par la police utilisée. Essayez des polices sûres pour le web.
5 votes
CSS3 propose aujourd'hui un grand nombre de nouvelles propriétés de décoration du texte. Veuillez consulter le site alligator.io/css/text-decoration Exemple :
text-underline-position: under;
ytext-decoration-skip: ink;
Veuillez noter que cette solution n'est probablement pas rétrocompatible avec les anciens navigateurs.2 votes
Un autre bonne solution
6 votes
Vote pour
text-underline-offset
ici : bugs.chromium.org/p/chromium/issues/