Marché
Tarifs
Se connecterCommencer
Guide pratiqueCSS et web
CSS et web

Effet de dégradé au survol en CSS : quatre façons de l’animer

Écrivez un nouveau dégradé dans :hover et il saute au lieu de glisser. Les navigateurs ne savent pas transformer un dégradé en un autre, mais ils savent le déplacer, le fondre ou animer ses couleurs. Voici chaque méthode, avec le code.

GradientlyCompte Gradiently vérifié·1 octobre 2026·6 min de lecture
Couverture : Snow Sanctuary · GR·5830·QE

L’essentiel en bref

  • Un effet de dégradé au survol en CSS ne s’obtient pas par une transition sur background-image, car les navigateurs remplacent les dégradés instantanément au lieu de les interpoler.
  • La technique la plus compatible est un dégradé surdimensionné avec une transition sur background-position, qui fait glisser les nouvelles couleurs dans le cadre.
  • Déclarer les arrêts de couleur ou les angles avec @property permet au navigateur de les animer en douceur, et fonctionne dans tous les grands navigateurs actuels.
  • Fondre l’opacité d’un second dégradé sur un pseudo-élément est la technique la moins coûteuse à rendre, car les changements d’opacité ne provoquent pas de nouveau rendu.
  • Les effets de survol doivent se placer dans une media query hover et respecter prefers-reduced-motion.
Sur cette page
Pourquoi la transition ne marche pas sur les dégradésTechnique 1 : faire glisser un dégradé surdimensionnéTechnique 2 : animer les arrêts de couleur avec @propertyTechnique 3 : un fondu enchaîné entre deux dégradésTechnique 4 : un halo qui suit le curseurChoisir une techniqueÉcrans tactiles et mouvement réduit

Un effet de dégradé au survol en CSS demande un contournement, car les navigateurs n’animent pas background-image : changez le dégradé dans :hover et il saute. Quatre techniques donnent un résultat fluide. Faire glisser un dégradé surdimensionné avec background-position, animer des arrêts de couleur déclarés avec @property, fondre un second dégradé sur un pseudo-élément, ou déplacer un halo radial avec le curseur. Chacune convient à des éléments différents, et toutes figurent ci-dessous avec leur code.

Pourquoi la transition ne marche pas sur les dégradés

Pour le navigateur, un dégradé est une image. Il sait interpoler un nombre ou une couleur, mais pas une image en une autre : background-image n’est donc pas interpolé, et le nouveau dégradé remplace l’ancien instantanément. Les propriétés personnalisées utilisées dans le dégradé se comportent de la même façon tant que vous ne les déclarez pas, car une propriété non déclarée n’est que du texte.

css
/* This snaps, with no easing */
.btn {
  background-image: linear-gradient(135deg, #1e1b4b, #6d28d9);
  transition: background-image 400ms ease;
}
.btn:hover {
  background-image: linear-gradient(135deg, #6d28d9, #f472b6);
}
La ligne de transition est ignorée pour les dégradés. Toutes les techniques ci-dessous contournent ce problème.
Les deux états utilisés dans les exemples. L’objectif : un passage fluide de la pastille de gauche à celle de droite.

Technique 1 : faire glisser un dégradé surdimensionné

Rendez l’arrière-plan plus grand que l’élément, peignez-y les deux états, puis déplacez-le. background-position peut être animé : les nouvelles couleurs glissent donc en place. Cela fonctionne dans tous les navigateurs, sans aucune déclaration.

css
.btn {
  background-image: linear-gradient(90deg, #1e1b4b 0%, #6d28d9 50%, #f472b6 100%);
  background-size: 200% 100%;
  background-position: 0% 50%;
  transition: background-position 500ms ease;
}

.btn:hover {
  background-position: 100% 50%;
}
Au repos, vous voyez la moitié gauche, de l’indigo au violet. Au survol, la moitié droite, du violet au rose, glisse en place.
La bande complète à 200 %linear-gradient(90deg, #1e1b4b 0%, #6d28d9 50%, #f472b6 100%)
Voici l’arrière-plan entier. Le bouton n’en montre jamais que la moitié à la fois.

Le mouvement se lit comme un balayage, ce qui convient aux boutons et aux liens. Il convainc moins sur les grandes cartes, où l’on voit le dégradé voyager. Animer background-position provoque un nouveau rendu, ce qui ne pose pas de problème pour les petits éléments ; pour une grande surface, utilisez la technique 3. Les boutons en dégradé CSS propose d’autres modèles de boutons construits sur ce principe.

Technique 2 : animer les arrêts de couleur avec @property

Déclarez les couleurs des arrêts comme propriétés personnalisées typées et le navigateur pourra les interpoler. Le dégradé change alors de couleur sur place, sans glisser. @property fonctionne dans tous les grands navigateurs actuels ; les plus anciens se contentent de sauter, ce qui est un repli acceptable pour un survol. Les règles de déclaration sont traitées dans @property en CSS.

css
@property --stop-a {
  syntax: "<color>";
  inherits: false;
  initial-value: #1e1b4b;
}

@property --stop-b {
  syntax: "<color>";
  inherits: false;
  initial-value: #6d28d9;
}

.card {
  background-image: linear-gradient(135deg, var(--stop-a), var(--stop-b));
  transition: --stop-a 450ms ease, --stop-b 450ms ease;
}

.card:hover {
  --stop-a: #6d28d9;
  --stop-b: #f472b6;
}
Chaque arrêt s’anime indépendamment. Donnez-leur des durées différentes et la couleur semble couler d’un coin à l’autre.

La même astuce anime l’angle. Déclarez --angle avec syntax: "<angle>", utilisez-le dans linear-gradient(var(--angle), ...) et changez-le au survol : un dégradé qui tourne de 135 à 225 degrés à l’arrivée du pointeur est une touche subtile et soignée pour les cartes et les bordures en dégradé.

Les deux techniques vues jusqu’ici fonctionnent aussi sur le texte en dégradé. Un texte découpé avec background-clip: text montre tout ce que fait l’arrière-plan : un glissement ou une transition d’arrêts sur un titre fait courir la couleur à travers les lettres au survol. Gardez le changement doux sur les titres qu’il faut lire, et assurez-vous que les deux états respectent le contraste avec la page.

Technique 3 : un fondu enchaîné entre deux dégradés

Placez le dégradé de survol sur un pseudo-élément au-dessus de la base et faites varier son opacité. Les changements d’opacité sont gérés par le compositeur sans nouveau rendu : c’est le choix le plus fluide pour les grandes cartes, les panneaux d’en-tête et tout ce qui figure dans une longue grille.

css
.tile {
  position: relative;
  isolation: isolate;
  background-image: linear-gradient(135deg, #1e1b4b, #6d28d9);
}

.tile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background-image: linear-gradient(135deg, #6d28d9, #f472b6);
  opacity: 0;
  transition: opacity 400ms ease;
}

.tile:hover::before {
  opacity: 1;
}
z-index: -1 avec isolation: isolate garde le pseudo-élément derrière le texte de la tuile mais au-dessus de son dégradé de base.

Technique 4 : un halo qui suit le curseur

Un dégradé radial positionné par des propriétés personnalisées peut suivre le pointeur. Définissez --x et --y avec un petit script et la lumière bouge avec la main. Gardez-le doux et loin du texte : il doit évoquer une lumière sur une surface, jamais un halo autour des mots.

css
.panel {
  background-image:
    radial-gradient(circle 220px at var(--x, 50%) var(--y, 50%), rgb(244 114 182 / 0.35), transparent 70%),
    linear-gradient(135deg, #1e1b4b, #312e81);
}

/* JavaScript:
   panel.addEventListener("pointermove", (e) => {
     const r = panel.getBoundingClientRect();
     panel.style.setProperty("--x", `${e.clientX - r.left}px`);
     panel.style.setProperty("--y", `${e.clientY - r.top}px`);
   });
*/
Le halo est un calque supérieur sur une base sombre. Mettre à jour deux propriétés personnalisées coûte peu, mais chaque mouvement provoque un nouveau rendu : réservez-le à quelques panneaux, pas à toutes les cartes d’une page.

Choisir une technique

Glissement avec background-position

Rendu visuel

Un balayage de nouvelle couleur

Coût de rendu

Nouveau rendu pendant la transition

Idéale pour

Boutons, liens, étiquettes
Arrêts de couleur avec @property

Rendu visuel

Des couleurs qui changent sur place

Coût de rendu

Nouveau rendu pendant la transition

Idéale pour

Cartes, badges, bordures
Fondu enchaîné d’opacité

Rendu visuel

Un dégradé qui se dissout dans un autre

Coût de rendu

Composé, sans nouveau rendu

Idéale pour

Grands panneaux, longues grilles
Halo suivant le curseur

Rendu visuel

Une lumière qui suit le pointeur

Coût de rendu

Nouveau rendu à chaque mouvement

Idéale pour

Quelques panneaux mis en avant
TechniqueRendu visuelCoût de renduIdéale pour
Glissement avec background-positionUn balayage de nouvelle couleurNouveau rendu pendant la transitionBoutons, liens, étiquettes
Arrêts de couleur avec @propertyDes couleurs qui changent sur placeNouveau rendu pendant la transitionCartes, badges, bordures
Fondu enchaîné d’opacitéUn dégradé qui se dissout dans un autreComposé, sans nouveau renduGrands panneaux, longues grilles
Halo suivant le curseurUne lumière qui suit le pointeurNouveau rendu à chaque mouvementQuelques panneaux mis en avant
Dans le doute, optez pour le fondu enchaîné. C’est le moins coûteux et il fonctionne partout.

Pour des dégradés qui bougent d’eux-mêmes plutôt qu’au survol, voyez les dégradés animés en CSS. Pour une vue d’ensemble de ce qui coûte du temps de rendu, voyez les performances des dégradés CSS.

Écrans tactiles et mouvement réduit

À éviter

  • Des styles de survol qui restent collés après un toucher sur téléphone
  • Une information qui n’apparaît qu’au survol
  • De longues animations de survol en boucle
  • Ignorer le réglage de mouvement réduit

À faire

  • Placer les règles de survol dans @media (hover: hover)
  • Afficher le même état sur :active pour le tactile
  • Garder les transitions entre 200 et 500 ms
  • Supprimer le mouvement sous prefers-reduced-motion, garder le changement de couleur
css
@media (hover: hover) {
  .btn:hover { background-position: 100% 50%; }
}

@media (prefers-reduced-motion: reduce) {
  .btn { transition: none; }
}
La couleur change toujours pour tout le monde ; seul le mouvement est retiré pour les personnes qui en ont demandé moins.

Les effets de survol donnent vie à un site web. Sur les publications sociales, il n’y a pas de pointeur : le mouvement doit vivre dans la création elle-même. Les Marks de Gradiently peuvent porter leur propre mouvement discret, et avec Pro une création s’exporte en MP4, WebM ou GIF là où le navigateur prend en charge l’enregistrement, prête pour une story ou une publication.

Trouvez un dégradé qui n’est qu’à vous

Parcourez des milliers de Marks, créez avec n’importe lequel gratuitement, et réservez celui qui vous ressemble.

Parcourir le Marché

Les questions qu’on nous pose

Peut-on faire une transition de dégradé CSS au survol ?

Pas directement. background-image change instantanément. Animez background-position sur un dégradé surdimensionné, animez des arrêts déclarés avec @property, ou fondez l’opacité d’un second dégradé.

Comment faire changer de couleur un bouton en dégradé en douceur au survol ?

Utilisez background-size: 200% 100% avec un dégradé à trois arrêts, puis animez background-position de 0% 50% à 100% 50% au survol.

@property fonctionne-t-il dans tous les navigateurs ?

Il fonctionne dans les versions actuelles de Chrome, Edge, Safari et Firefox. Les anciens navigateurs sautent d’un état à l’autre au lieu de les enchaîner en douceur.

Quel est l’effet de dégradé au survol le plus performant ?

Un fondu enchaîné d’opacité : le dégradé de survol se trouve sur un pseudo-élément et seule son opacité change, ce qui évite un nouveau rendu.

Les effets de dégradé au survol doivent-ils respecter le mouvement réduit ?

Oui. Sous prefers-reduced-motion: reduce, retirez le mouvement et gardez un simple changement de couleur.

Partager ce guide

Écrit par GradientlyCompte Gradiently vérifié

L’équipe derrière Gradiently, un outil de création construit autour des Marks : des dégradés vivants qui donnent à tout ce que vous créez votre propre signature.

Voir notre profil

Sur cette page

Pourquoi la transition ne marche pas sur les dégradésTechnique 1 : faire glisser un dégradé surdimensionnéTechnique 2 : animer les arrêts de couleur avec @propertyTechnique 3 : un fondu enchaîné entre deux dégradésTechnique 4 : un halo qui suit le curseurChoisir une techniqueÉcrans tactiles et mouvement réduit

Partager ce guide

À suivre dans CSS et web

@property en CSS : animer dégradés et propriétés personnalisées

Pour aller plus loin

Tous les guides : CSS et web
CSS et web

Fonds dégradés animés en CSS, dans les règles de l’art

5 min de lecture

On ne peut pas animer directement un dégradé, mais tout ce qui l’entoure, si. Quatre techniques, ce que chacune coûte au navigateur, et comment garder un mouvement calme et facultatif.

CSS et web

@property en CSS : animer dégradés et propriétés personnalisées

6 min de lecture

Les dégradés refusent les transitions car le navigateur ne sait pas fondre une image dans une autre. Donnez un type à une propriété personnalisée et cette limite disparaît. Voici comment fonctionne @property, avec du code à coller.

CSS et web

Boutons dégradés en CSS qui font haut de gamme

5 min de lecture

La plupart des boutons dégradés font bon marché pour les mêmes raisons : trop de teintes, un survol qui saute et un texte qui s’efface dans l’extrémité claire. Voici la recette qui évite les trois.

Trouvez le style qui n’est qu’à vous.

Chaque Mark est un fond vivant avec un seul propriétaire. Essayez un Mark encore disponible et réservez le vôtre quand vous le sentez.

Commencer à créer

Vérifier un certificat

Saisissez un numéro de certificat ou le code d’un Mark pour voir à qui il appartient.

Fonctionne avec ChatGPT et Claude

Demandez une création à votre IA. Elle la réalise dans votre Mark, prête à modifier.

ChatGPTClaude
Comment se connecter

Produit

  • Marché
  • Explorer
  • Tarifs
  • Certificats

Apprendre

  • Guide pratique
  • Centre d’aide
  • Nouveautés

Développeurs

  • Vue d’ensemble
  • ChatGPT et Claude
  • Référence de l’API
  • Clés API

Entreprise

  • À propos
  • Nous contacter
  • Se connecter

Mentions légales

  • Conditions
  • Confidentialité
  • Remboursements
  • Protection des Marks
  • Cookies
  • Toutes les politiques
Parcourez les lettres. Chacune porte un vrai Mark.Touchez une lettre pour voir son Mark.Un seul nom. Dix Marks à l’intérieur.
© 2026 Gradiently