Hover✨ Premium

Underline Expand

Un trait de 3 px dégradé indigo-violet naît du centre de l'élément et s'étend jusqu'à 60 % de sa largeur en 0,3 s au survol — pure CSS, ::after.

CSSLine

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Hover comprend 48 effets, dont 5 gratuits. Découvrir la catégorie →

3 exemples d'usage

Lien de navigation d'un cabinet d'architectes — menu principal d'un bureau d'études — Underline Expand exemple 1

① Lien de navigation d'un cabinet d'architectes — menu principal d'un bureau d'études

QuandCinq entrées de menu (Projets, Studio, Équipe, Publications, Contact) ; au survol un trait fin apparaît sous l'intitulé depuis son centre.
PourquoiUn trait qui s'étend du centre vers les bords est élégant pour de la typographie de qualité ; il signale la position active sans animation de fond.
RéglagesEntrées de 100×56 px sur fond sombre ; trait 2 px, dégradé remplacé par couleur unie pour sobriété ; cibles sur l'ellipse de capture.
Onglet de tableau de bord — outil de suivi de chantiers d'un maître d'œuvre — Underline Expand exemple 2

② Onglet de tableau de bord — outil de suivi de chantiers d'un maître d'œuvre

QuandCinq onglets horizontaux (Planning, Budget, Documents, Équipe, Messages) ; au survol le trait en bas de l'onglet actif s'étend depuis le centre.
PourquoiUn indicateur d'onglet actif qui grandit depuis le centre est lisible et ne perturbe pas l'alignement vertical du tableau.
RéglagesOnglets 120×48 px ; hauteur fixe dans l'ellipse de capture ; onglet actif avec trait pleine largeur (60 %) et opacité différenciée.
Lien de pied de page d'un artisan boulanger — Underline Expand exemple 3

③ Lien de pied de page d'un artisan boulanger

QuandLiens du footer (Réseaux, Newsletter, Boutique, Mentions légales) ; au survol un trait indigo s'étend sous le texte depuis son centre.
PourquoiUn pied de page discret qui s'anime légèrement au survol guide l'œil sans casser le silence visuel du bas de page.
RéglagesLiens 120×44 px en ligne ; fond sombre ; trait 2 px sur fond blanc ou beige ajusté à la charte boulangerie.

Comment ça marche

La racine .fx-0347-root centre un bouton de 200 px. Un pseudo-élément ::after positionné en absolu porte le trait : height: 3px, width: 0 au repos, bottom: 1rem (variable --space-4). left: 50% avec transform: translateX(-50%) garantit que le trait part exactement du centre, quelle que soit la largeur de l'élément. Au survol, width: 60% s'anime en 0,3 s. Le dégradé (--gradient-primary : indigo 0 %, violet 50 %, rose 100 %) est toujours visible même à largeur faible car il est calculé proportionnellement.

:focus-visible déclenche la même extension du trait que le survol, avec un contour indigo en plus. Pure CSS, aucun JavaScript. Sous mouvement réduit, la transition est désactivée mais le trait apparaît à sa largeur finale instantanément — retour d'état garanti. L'effet convient aux liens, aux onglets et aux libellés courts ; pour un trait qui commence d'un côté (plutôt que du centre), supprimez left: 50% et transform et utilisez left: 0.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, la transition est neutralisée. Le trait apparaît à 60 % de large instantanément au survol et au focus.
  • Clavier : l'élément est un <button> nativement focusable. :focus-visible étend le trait et ajoute un contour de 2 px pour signaler le focus clavier.
  • Toucher : le tap active généralement le survol CSS sur mobile. L'effet se dissipe au prochain changement de focus.
  • Lisibilité : le trait est positionné en bottom: 1rem de l'élément, pas en bas du texte. Sur un élément de grande hauteur (ex. 200 px), il y a un espace entre le texte et le trait — adaptez bottom pour le rapprocher du texte si besoin.

Compatibilité navigateur

Pure CSS. Propriétés : ::after, width (transition), transform: translateX, dégradé linéaire, :focus-visible. Vérifié dans Chromium et Firefox : trait centré, extension visible, deux copies indépendantes, 0 erreur.

Chrome 86+✓ Complet (mesuré)
Firefox 85+✓ Complet (mesuré)
Safari 15.4+✓ Complet (:focus-visible)
Edge 86+✓ Complet (moteur Chromium)
Mobile iOS 15.4+✓ Complet
Android Chrome 86+✓ Complet (mesuré)

Sans :focus-visible (avant 2021), le focus clavier ne déclenche pas l'extension du trait.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0347-root">
  <button class="uln-box uln-line" type="button">
    <span>Votre texte</span>
  </button>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Largeur finale du trait (CSS — 60%) 60 % de l'élément 80% ou 100% pour un trait plus affirmé ; 40% plus discret. calc(100% - 2rem) laisse une marge des deux côtés.
Épaisseur du trait (CSS — height: 3px) 3 px 1 px pour une ligne hair ; 4-5 px pour un soulignement affirmé.
Dégradé (CSS — --gradient-primary) indigo → violet → rose Remplacez par une couleur unie (background: #6366f1) pour une sobriété maximale, ou par un autre dégradé.
Position verticale (CSS — bottom: var(--space-4)) 1 rem du bas bottom: 4px colle le trait au bord bas de l'élément ; bottom: 50% le centre verticalement (style soulignement typographique).
Direction (CSS — supprimer left: 50% et transform) départ du centre Remplacer par left: 0 donne un trait qui part du bord gauche et s'étend vers la droite — plus classique pour des liens de navigation.

FAQ

Supprimez left: 50% et transform: translateX(-50%) sur ::after, et ajoutez left: 0. Le trait naîtra du bord gauche et s'étendra vers la droite.
Ajustez bottom sur ::after. Pour aligner le trait précisément sous la ligne de texte, utilisez bottom: auto; top: calc(50% + 0.7em) en ajustant l'offset selon la taille de police.
Oui. Ajoutez une transition sur background en plus de width et changez le dégradé dans la règle :hover/:focus-visible. Les navigateurs interpolent les dégradés depuis Chrome 128 / Firefox 128 — sur les versions antérieures, préférez deux couleurs unies.