L’essentiel en bref
- Un bouton dégradé haut de gamme mélange en général deux teintes voisines de luminosité proche, avec un léger reflet le long de son bord supérieur.
- Les dégradés ne se transitionnent pas : un survol fluide déplace donc un dégradé surdimensionné avec background-position ou fait apparaître un calque avec opacity.
- Un texte blanc sur un bouton dégradé demande au moins 4,5:1 de contraste avec la partie la plus claire du dégradé, pas seulement la plus sombre.
- Un état pressé peut être aussi simple que décaler le bouton d’un pixel vers le bas et retirer son ombre extérieure.
- Les boutons dégradés fonctionnent mieux comme unique action principale d’un écran, les actions secondaires restant unies ou en contour.
Sur cette page
Écrire un CSS de bouton dégradé qui fait haut de gamme tient à la retenue. Choisissez deux teintes voisines de luminosité proche, ajoutez un léger reflet le long du bord supérieur, déplacez le dégradé au survol au lieu de le remplacer, et vérifiez que le texte se lit sur la partie la plus claire. La version criarde, aux bords arc-en-ciel, est facile à faire et se repère vite comme un modèle ; la version discrète est ce qui donne à un produit un air fini.
.button {
display: inline-flex;
align-items: center;
gap: 0.5em;
padding: 0.75em 1.4em;
border: 0;
border-radius: 999px;
color: #fff;
font-weight: 600;
background-color: #4f46e5;
background-image: linear-gradient(110deg, #4f46e5, #9333ea 50%, #4f46e5);
background-size: 200% 100%;
background-position: 0% 50%;
box-shadow:
inset 0 1px 0 rgb(255 255 255 / 0.25),
0 6px 16px -6px rgb(79 70 229 / 0.6);
transition: background-position 0.5s ease, transform 0.15s ease, box-shadow 0.15s ease;
cursor: pointer;
}
.button:hover {
background-position: 100% 50%;
}
.button:active {
transform: translateY(1px);
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.2);
}linear-gradient(110deg, #4f46e5, #9333ea 50%, #4f46e5)Boutons dégradés discrets ou vifs
Un bouton discret utilise deux teintes voisines sur le cercle chromatique, comme l’indigo et le violet, si bien que le dégradé se lit comme de la profondeur plutôt que du décor. Un bouton vif couvre des teintes éloignées et devient la chose la plus colorée de la page. Le vif peut marcher pour un moment de lancement ou une marque ludique ; le discret marche partout ailleurs. Chaque palette ci-dessous garde le texte blanc au-dessus de 4,5:1 aux deux extrémités.
Contraste du texte sur les boutons dégradés
Un vérificateur de contraste prend une couleur de fond, mais un bouton en a toute une gamme. Vérifiez la couleur du texte contre l’arrêt le plus clair, car c’est là que le libellé est le plus faible. Un texte de bouton de taille normale demande 4,5:1 selon les WCAG, et le vérificateur de contraste de WebAIM fait de chaque arrêt un contrôle rapide. L’échec habituel est un dégradé chaud qui finit en jaune ou en orange clair : il paraît énergique et rend la moitié du libellé illisible.
À éviter
- Orange vers jaune, #f97316 vers #fbbf24, sous du texte blanc : 2,8 et 1,7 pour 1
- Des dégradés pastel clairs avec des libellés blancs
- Ne vérifier que la couleur derrière la première lettre
- Des graisses fines et légères sur un dégradé chargé
À faire
- Des arrêts profonds de luminosité proche, comme cramoisi vers orange brûlé
- Du texte sombre sur les dégradés pastel
- Vérifier l’arrêt le plus clair et le point médian
- Des graisses de 600 ou plus pour les libellés sur dégradé
Plus de détails sur le calcul et les seuils dans le contraste des couleurs et l’accessibilité, et la même règle vaut pour tout texte sur un fond dégradé.
Des états de survol fluides pour les boutons dégradés
background-image ne se transitionne pas : remplacez un dégradé par un autre au survol et il saute. Il existe deux alternatives fluides. La première, utilisée dans la recette ci-dessus, consiste à peindre le dégradé deux fois plus large et à faire glisser background-position. La seconde place le dégradé de survol sur un pseudo-élément et en fait varier l’opacité, ce qui convient aux survols qui changent entièrement de couleur.
.button--fade {
position: relative;
isolation: isolate;
overflow: hidden;
background-image: linear-gradient(110deg, #be123c, #c2410c);
}
.button--fade::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background-image: linear-gradient(110deg, #c2410c, #be123c);
opacity: 0;
transition: opacity 0.3s ease;
}
.button--fade:hover::before {
opacity: 1;
}Gardez de petits changements au survol. Un dégradé qui bouge un peu et une ombre qui s’approfondit légèrement paraissent réactifs ; un bouton qui change entièrement de teinte paraît instable. Si vous ajoutez un mouvement continu, comme un lent scintillement, coupez-le pour ceux qui préfèrent le mouvement réduit.
Bordures, contours et boutons secondaires
Un bouton dégradé par écran est en général ce qu’il faut : il marque l’action principale. Les actions secondaires vont mieux en contour qui reprend le dégradé sur un fin bord. Deux arrière-plans, l’un découpé à la boîte de remplissage et l’autre à la boîte de bordure, donnent un contour dégradé arrondi au milieu uni.
.button--outline {
border: 2px solid transparent;
border-radius: 999px;
color: #312e81;
background:
linear-gradient(#fff, #fff) padding-box,
linear-gradient(110deg, #4f46e5, #9333ea) border-box;
}États désactivé et chargement
Un bouton dégradé désactivé doit cesser de ressembler à une invitation. Retirez complètement le dégradé plutôt que de baisser l’opacité, ce qui peut laisser un bouton pâli mais encore coloré sur lequel on essaie d’appuyer. Un gris uni de faible contraste avec cursor: not-allowed se lit clairement comme indisponible. Pour le chargement, gardez le dégradé et remplacez le libellé par une roue pour que le bouton ne change pas de taille.
.button:disabled {
background-image: none;
background-color: #e5e7eb;
color: #6b7280;
box-shadow: none;
cursor: not-allowed;
}Les finitions qui font haut de gamme
- Un reflet supérieur.
inset 0 1px 0 rgb(255 255 255 / 0.25)suggère une source de lumière au-dessus et donne à la surface une légère courbure. - Une ombre teintée. Une ombre de la teinte du bouton, plutôt que noire, le fait rayonner au lieu de flotter.
- Un seul angle pour tout. Utilisez le même angle de dégradé, comme 110deg, pour chaque contrôle en dégradé.
- Les couleurs de la marque, pas des préréglages. Le mélange doit venir de votre palette ; l’identité par le dégradé explique pourquoi.
- Un reflet conique, avec parcimonie. Un léger calque conique peut ajouter un éclat métallique ; voyez les dégradés coniques CSS.
Les questions qu’on nous pose
Comment faire un bouton dégradé en CSS ?
Définissez background-image: linear-gradient(110deg, #4f46e5, #9333ea) sur le bouton, avec un texte blanc, des coins arrondis et une background-color unie en repli.
Comment animer un bouton dégradé au survol ?
Rendez le dégradé deux fois plus large avec background-size: 200% 100% et transitionnez background-position, ou faites apparaître en fondu un pseudo-élément qui porte le dégradé de survol.
Pourquoi mon bouton dégradé change-t-il instantanément au survol ?
Les navigateurs ne peuvent pas transitionner entre deux valeurs de background-image. Déplacez ou faites apparaître le dégradé au lieu de le remplacer.
Quelle couleur de texte fonctionne sur un bouton dégradé ?
Celle qui atteint au moins 4,5:1 de contraste avec la partie la plus claire du dégradé. Le blanc marche sur les dégradés profonds ; le texte sombre convient aux pastels.
Tous les boutons doivent-ils utiliser un dégradé ?
Non. Utilisez un dégradé pour l’unique action principale d’un écran et gardez les boutons secondaires unis ou en contour, pour que l’important ressorte.
Écrit par Gradiently
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


