Utilitaires✨ Premium

Gradient Border Morph

Bordure en dégradé conique qui tourne lentement ; au survol, au focus ou au toucher, ses quatre couleurs glissent en 0,8 s vers une palette chaude.

CSSHoverGradient

Mis à jour le

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

3 exemples d'usage

Bouton « Prolonger les prêts » d'un compte de médiathèque — Gradient Border Morph exemple 1

① Bouton « Prolonger les prêts » d'un compte de médiathèque

QuandDans le compte lecteur de la médiathèque Brecolune, sous les trois documents à rendre le 3 décembre, un bouton large propose de tout prolonger ; sa bordure tourne doucement en violet et vire à l'ambre et au cyan dès que la souris ou le focus arrive dessus.
PourquoiC'est la seule action de la page : la bordure qui tourne la désigne sans couleur criarde, et le fondu de palette répond au geste sans saut brusque, ce qui reste agréable sur un bouton qu'on survole souvent avant de se décider.
Réglages--gbm-w: 300px; --gbm-h: 46px; --gbm-radius: 23px; --gbm-fill: #131620 ; palettes et durées par défaut ; le lien .gbm-link porte le texte du bouton.
Planning des cours d'une école de danse — Gradient Border Morph exemple 2

② Planning des cours d'une école de danse

QuandSur la page de l'école de danse Grisaunelle, les six cours du samedi (éveil, classique, hip-hop, contemporain, barre au sol, jazz) forment une grille de cartes avec l'heure et le studio ; au repos leur filet gris tourne à peine, et la carte survolée s'embrase en ambre, rouge, rose et cyan.
PourquoiEn réglant la palette de repos sur deux gris, l'effet devient un indicateur de survol pour une grille entière : rien ne crie au repos, le cours visé se détache nettement avant le clic qui ouvre sa fiche.
RéglagesUne racine pour les six cartes (chaque nom de cours est le lien .gbm-link), en grille de 3 colonnes ; --gbm-w: 100%; --gbm-h: 104px; --gbm-fill: #14131c ; --gbm-from-1 à --gbm-from-4 en #2a2838 / #3b3850 ; --gbm-speed: 8s; --gbm-morph: .6s.
Bannière de saison d'une épicerie fine — Gradient Border Morph exemple 3

③ Bannière de saison d'une épicerie fine

QuandEn haut de l'accueil de Maison Valdrouet, la bannière « La sélection d'automne est arrivée » est bordée de verts d'été qui tournent lentement ; au passage de la souris, ils virent aux roux et aux ocres de l'automne.
PourquoiLe fondu de palette raconte le message de la bannière (on passe d'une saison à l'autre) au lieu d'être un simple ornement ; posée sur une page claire, la boîte sombre garde la bordure lisible.
Réglages--gbm-w: 100%; --gbm-h: 148px; --gbm-radius: 16px; --gbm-fill: #2b241a ; repos #4d7c0f #84cc16 #a3e635 #65a30d, survol #b45309 #ea580c #dc2626 #ca8a04 ; --gbm-speed: 12s.

Comment ça marche

La boîte .gbm-box (200 × 120 px, arrondi 12 px) pose derrière elle un calque ::before qui dépasse de 3 px de chaque côté, rempli d'un conic-gradient à quatre couleurs : indigo #6366f1, violet #8b5cf6, magenta #d946ef, rose #ec4899, puis retour à l'indigo. Un second calque ::after, du fond de la boîte, masque l'intérieur à 3 px du bord : il reste une bande colorée de 6 px à cheval sur le bord, qui tourne d'un tour complet en 6 s.

Au survol, ou quand un élément de la boîte a le focus (:focus-within), les quatre couleurs passent à ambre #f59e0b, rouge #ef4444, rose #ec4899 et cyan #06b6d4, et la bande se floute de 2 px. Le changement dure 0,8 s et passe par toutes les teintes intermédiaires : à mi-parcours, l'indigo est déjà devenu un mauve tirant vers l'ocre.

Ce fondu existe parce que les quatre couleurs sont des variables enregistrées avec @property en tant que <color>, et l'angle en tant que <angle>. Un dégradé écrit en dur ne se transitionne pas : le navigateur bascule d'une image à l'autre. Ici, il interpole chaque couleur séparément, et le dégradé est recalculé à chaque image (mesuré dans les trois moteurs : 99,102,241 → 142,118,173 → 194,138,92 → 245,158,11 en 0,9 s pour la première couleur).

Le libellé est un lien, .gbm-link, étiré sur toute la boîte par son ::after ; il fait de la boîte une vraie cible cliquable, atteignable au clavier, et c'est lui qui déclenche la palette chaude au focus et au toucher.

Accessibilité

  • Clavier : Tab s'arrête sur le lien de la boîte ; la palette chaude arrive comme au survol et un contour blanc (--gbm-ring) encadre la boîte quand le focus vient du clavier. Dans Safari, l'arrêt de Tab sur les liens dépend du réglage clavier du navigateur (Option+Tab sinon).
  • Toucher : toucher le lien fait changer la palette dans Chromium, Firefox et WebKit (mesuré avec écran tactile simulé) ; elle revient quand on touche ailleurs.
  • Mouvement réduit : avec prefers-reduced-motion: reduce, le dégradé ne tourne plus et la palette change d'un coup, sans fondu ; le flou de 2 px au survol est conservé.
  • Couleur seule : le changement de palette ne doit pas être la seule indication d'un état (sélection, choix validé) ; ajoutez un texte ou une coche si la boîte sert à choisir quelque chose.

Compatibilité navigateur

CSS seul, aucun JavaScript. Mesuré dans Chromium 151, Firefox 153 et le WebKit 26.5 de Playwright : bordure visible, rotation, fondu réel des quatre couleurs, deux copies indépendantes, survol, Tab, toucher, 390 px et mouvement réduit. Versions minimales d'après @mdn/browser-compat-data : rotation et fondu reposent sur @property (Chrome 85, Firefox 128, Safari 16.4) ; le lien étiré utilise inset (Chrome 87).

Chrome 87+✓ Complet (mesuré dans la version 151)
Firefox 128+✓ Complet (mesuré dans la version 153) ; de 83 à 127, bordure fixe et palette qui bascule sans fondu
Safari 16.4+✓ Complet (mesuré dans WebKit) ; de 14.1 à 16.3, bordure fixe et bascule sans fondu
Edge 87+✓ Complet (moteur Chromium)
Safari iOS 16.4+✓ Complet, palette chaude au toucher du lien (mesuré dans WebKit tactile)
Chrome Android 87+✓ Complet (moteur Chromium)

Sans @property, les couleurs passent par des variables ordinaires et l'angle a une valeur de secours dans var() : la bordure reste affichée, ne tourne pas, et change de palette instantanément au survol (vérifié en retirant les règles @property dans Chromium).

Le code

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

index.html — structure
<div class="fx-0771-root">
  <div class="gbm-box">
    <a class="gbm-link" href="#gradient-morph">Gradient Morph</a>
  </div>
</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
--gbm-from-1 à --gbm-from-4 #6366f1, #8b5cf6, #d946ef, #ec4899 Les quatre couleurs du dégradé au repos (la première ferme aussi le tour).
--gbm-to-1 à --gbm-to-4 #f59e0b, #ef4444, #ec4899, #06b6d4 Les quatre couleurs au survol, au focus et au toucher.
--gbm-morph .8s Durée du fondu d'une palette à l'autre (et du flou).
--gbm-speed 6s Durée d'un tour du dégradé.
--gbm-w, --gbm-h, --gbm-radius 200px, 120px, 12px Taille et arrondi ; la bordure suit l'arrondi et la largeur ne dépasse jamais celle du conteneur.
--gbm-fill #0a0a0f Fond de la boîte, qui sert aussi de masque intérieur.
--gbm-ring #fff Couleur du contour de focus clavier.

FAQ

Un background en dégradé n'est pas animable : entre deux dégradés, le navigateur change d'image d'un coup. En enregistrant chaque couleur comme <color>, la transition porte sur quatre couleurs simples, que le navigateur sait mélanger ; le dégradé qui les utilise suit, image après image.
Gardez la boîte et mettez votre <a> ou votre <button> dedans avec la classe gbm-link, comme dans l'exemple de la médiathèque : son ::after rend toute la boîte cliquable, et son focus déclenche la palette chaude. Un <button> garde le fond et la bordure du navigateur : ajoutez-lui background: none; border: 0; font: inherit. Réglez --gbm-h et --gbm-radius pour une forme de pilule.
Oui : donnez aux quatre variables --gbm-from-* des gris proches du fond, comme dans le planning de l'école de danse. Le fondu part alors d'un filet presque neutre et va vers les couleurs vives de --gbm-to-*.