Hover✨ Premium

Gradient Shift

Un dégradé à trois couleurs animé en boucle lente au repos (8 s) accélère à 2 s au survol — la vitesse quadruple par un seul changement de propriété CSS animation-duration. Aucun JavaScript.

CSSGradientAnimation

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

Boutons de genre musical — interface de streaming — Gradient Shift exemple 1

① Boutons de genre musical — interface de streaming

QuandSix boutons de genre (Hip-Hop, Electronic, Jazz, Indie, Classique, R&B) en grille 3×2 ; au repos le fond de chaque bouton tourne lentement ; au survol l'animation s'accélère pour prévisualiser l'énergie du genre.
PourquoiL'accélération du fond animé traduit métaphoriquement le tempo et l'intensité de chaque genre musical, sans image ni icône supplémentaire.
RéglagesBoutons 100 %×52 px, dégradé 3 couleurs propre à chaque genre, 8 s au repos, 2 s au survol, scale(1.05).
Carte de formule premium — page de tarification d'un SaaS — Gradient Shift exemple 2

② Carte de formule premium — page de tarification d'un SaaS

QuandTrois formules côte à côte (Starter, Pro, Scale) ; les formules Pro et Scale ont un fond animé qui tourne lentement au repos et s'emballe au survol pour se distinguer de la formule gratuite.
PourquoiUne formule payante dont le fond s'emballe au survol se distingue naturellement de la formule gratuite statique, sans sticker 'Populaire' ni bordure surlignée.
RéglagesCartes 100 %×hauteur variable, dégradé propre à chaque plan payant, formule gratuite avec fond statique overridé, badge + nom + prix + liste de fonctions.
Bandeau d'urgence 'Dernières places' — site de festival — Gradient Shift exemple 3

③ Bandeau d'urgence 'Dernières places' — site de festival

QuandBandeau pleine largeur en haut de la page d'un festival ; au repos le fond tourne lentement pour signaler qu'il y a quelque chose à voir ; au survol il s'accélère pour renforcer l'urgence.
PourquoiL'accélération visuelle traduit l'urgence temporelle (places limitées) : c'est un signal sémantique fort sans texte d'alerte supplémentaire.
RéglagesBandeau 100 %×60 px, dégradé indigo-rose-ambre, 8 s au repos, 2 s au survol, texte + bouton 'Acheter' en z-index 1 par-dessus.

Comment ça marche

La racine .fx-0360-root centre un bloc .hover-box.hover-gradient-shift de 200 × 200 px. L'élément porte un fond linear-gradient(135deg, #6366f1 0, #ec4899 50%, #f59e0b 100%) 0 0/200% 200% — un dégradé sur 200 % de largeur et hauteur, ce qui permet de déplacer la position du fond pour faire défiler les couleurs.

Deux @keyframes identiques dans leur géométrie (animation de background-position de 0 à 100 % et retour) mais aux noms différents (fx0360-gradientIdle et fx0360-gradientFast) permettent de basculer entre deux durées : 8 s au repos, 2 s au survol. Changer de animation-name au survol redémarre l'animation depuis le début — le fait d'avoir deux noms distincts garantit un vrai redémarrage, non une simple accélération de l'animation courante. L'élément s'agrandit simultanément de scale(1.05).

Les noms fx0360- évitent les collisions. Mesuré dans Chromium 151 : animation lente au repos, accélération visible au survol, deux copies indépendantes.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, toutes les animations sont arrêtées et le scale annulé ; au survol l'élément affiche un filter: brightness(1.15) fixe. L'animation continue au repos est également désactivée.
  • Clavier : l’élément est un <button> nativement focusable. La règle :focus-visible déclenche la même accélération du gradient ; un contour indigo signale le focus.
  • Animation en boucle au repos : l'animation idle (8 s) tourne sans interaction. Sous prefers-reduced-motion: reduce, elle s'arrête. Sur une page riche en contenu animé, envisagez de démarrer l'animation idle seulement quand l'élément est visible (IntersectionObserver).
  • Toucher : le premier toucher déclenche l'accélération ; elle reste active jusqu'au prochain toucher.

Compatibilité navigateur

CSS pur (@keyframes, background-position, animation, background-size, :focus-visible, prefers-reduced-motion), aucun JavaScript. Mesuré dans Chromium 151 : animation visible, accélération au survol, deux copies indépendantes. Fonctionne dans tous les navigateurs modernes.

Chrome 60+✓ Complet (mesuré)
Firefox 55+✓ Complet
Safari 10.1+✓ Complet
Edge 79+✓ Complet (moteur Chromium)
Mobile iOS 10.3+✓ Complet
Android Chrome 60+✓ Complet (moteur Chromium)

Sans animation, le fond reste statique au repos et au survol. Sans background-size: 200% 200%, le dégradé ne peut pas défiler.

Le code

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

index.html — structure
<div class="fx-0360-root">
  <button class="hover-box hover-gradient-shift" type="button">
    <span>…</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
Dégradé de base (CSS — background de .hover-gradient-shift) Indigo → rose → ambre sur 200 % × 200 % Changez les trois couleurs pour votre palette. Gardez 0 0/200% 200% pour que le défilement de position fasse tourner le dégradé.
Durée au repos (CSS — animation: 8s ease infinite fx0360-gradientIdle) 8 s par cycle 12s pour une animation très lente et discrète ; 4s pour une animation plus visible au repos.
Durée au survol (CSS — animation: 2s ease infinite fx0360-gradientFast) 2 s par cycle (4× plus vite) 1s pour une accélération extrême ; 4s pour une accélération plus douce. Le rapport idle/fast définit l'intensité du signal.
Scale au survol (CSS — transform: scale(1.05)) 5 % d'agrandissement Passez à scale(1) pour désactiver l'agrandissement si l'animation de fond seule suffit.
Noms des @keyframes (CSS — fx0360-gradientIdle / fx0360-gradientFast) Préfixés fx0360- Ne changez les noms que si vous copiez le code dans un environnement où le préfixe entre en conflit. Les deux noms doivent rester différents pour garantir le redémarrage.

FAQ

Changer l'animation-name au survol force le navigateur à redémarrer l'animation depuis la position 0. Avec un seul @keyframes, changer seulement animation-duration accélère l'animation sans la redémarrer : la position courante est conservée, ce qui peut créer un saut visuel.
Oui : retirez la propriété animation du sélecteur .hover-gradient-shift et gardez-la uniquement sur :hover et :focus-visible. Le fond sera statique au repos et s'animera uniquement au survol.
Calculez la durée en JavaScript : const restant = endTime - Date.now(); el.style.animationDuration = (restant/1000).toFixed(1)+'s'. La durée décroissante accélère l'animation à mesure que l'heure approche.