L’essentiel en bref
- Pour rendre un dégradé CSS transparent, utilisez comme arrêt une couleur à alpha nul, comme transparent ou rgb(124 58 237 / 0).
- Les navigateurs modernes interpolent les couleurs des dégradés en alpha prémultiplié : fondre une couleur vers le mot-clé transparent ne produit plus de bande grise.
- Un dégradé d’arrière-plan ne peut fondre que l’arrière-plan ; pour fondre le contenu réel d’un élément, utilisez mask-image avec un dégradé.
- Un voile à plusieurs arrêts adoucis paraît plus fluide qu’un fondu à deux arrêts, qui laisse un bord visible là où l’assombrissement s’arrête.
- Un dégradé radial transparent au centre et sombre à l’extérieur crée un projecteur qui attire l’attention sur une zone.
Sur cette page
Pour rendre un dégradé CSS transparent, donnez à l’un de ses arrêts une couleur à alpha nul : linear-gradient(to bottom, #7c3aed, transparent) fond le violet vers le néant et laisse voir ce qui se trouve en dessous. La même idée sert aux fondus en fin de texte, aux voiles sombres derrière les légendes et aux voiles colorés sur les photos. Pour fondre le contenu d’un élément plutôt que son arrière-plan, utilisez plutôt mask-image avec un dégradé.
Les façons d’écrire une couleur transparente
transparentSignifie
À utiliser quand
rgb(124 58 237 / 0)Signifie
À utiliser quand
rgb(124 58 237 / 0.4)Signifie
À utiliser quand
#7c3aed66Signifie
À utiliser quand
color-mix(in srgb, var(--brand) 40%, transparent)Signifie
À utiliser quand
color-mix() est la seule qui fonctionne sur une couleur que vous ne connaissez que sous forme de variable ; voyez color-mix() en CSS.Pourquoi les fondus viraient au gris
Le mot-clé transparent est du noir à alpha nul. Les premiers navigateurs mélangeaient séparément les canaux rouge, vert et bleu et le canal alpha : un fondu du blanc vers transparent passait donc par un gris semi-transparent en chemin. C’est pourquoi les anciens tutoriels insistent sur rgba(255, 255, 255, 0).
La spécification impose désormais l’alpha prémultiplié : chaque couleur est pondérée par son opacité avant le mélange, si bien qu’un arrêt totalement transparent n’apporte aucune couleur. Tous les navigateurs actuels le font. Écrire la couleur correspondante à alpha nul reste une habitude sans risque, et elle vous protège dans les clients de messagerie et les anciennes WebViews.
Ancien comportement
- Le blanc vers
transparentpasse par le gris - Canaux de couleur mélangés sans tenir compte de l’opacité
- Contournement : répéter la couleur à alpha nul
Navigateurs actuels
- Le blanc vers
transparentreste blanc en s’effaçant - Alpha prémultiplié, comme l’exige la spécification
- Les deux formes marchent ; l’explicite est plus portable
L’endroit où s’arrête le fondu compte autant que ses couleurs. Un arrêt à 70 % termine le fondu tôt et laisse le reste de la boîte totalement dégagé, idéal pour une teinte qui ne doit toucher qu’un bord. Deux arrêts à la même position créent une coupure nette de la couleur au vide, utile pour les barres à moitié remplies et les fonds partagés. Les positions d’arrêt sont expliquées dans les dégradés linéaires CSS.
Fondre le contenu avec mask-image
Un dégradé d’arrière-plan se trouve derrière le contenu : il ne peut donc pas fondre du texte, des images ou une liste qui défile. Un masque le peut. Avec mask-image, les parties opaques du dégradé gardent l’élément visible et les parties transparentes le masquent. La couleur du masque n’a pas d’importance, seul son alpha compte.
/* Fade the last lines of a teaser paragraph */
.teaser {
max-height: 9rem;
overflow: hidden;
mask-image: linear-gradient(to bottom, #000 60%, transparent);
}
/* Soft edges on a horizontally scrolling row */
.carousel {
overflow-x: auto;
mask-image: linear-gradient(to right, transparent, #000 48px, #000 calc(100% - 48px), transparent);
}
/* Fade a photo into the page on any background colour */
.hero-photo {
mask-image: linear-gradient(to bottom, #000 50%, transparent 95%);
}mask-image sans préfixe fonctionne dans les navigateurs actuels ; ajoutez -webkit-mask-image pour les anciens Safari.L’ancienne alternative était un dégradé blanc posé sur le contenu. Il casse dès que la page n’est pas blanche, en mode sombre par exemple, et il bloque les clics si vous oubliez pointer-events: none. Un masque n’a aucun de ces problèmes.
Les scrims : des dégradés transparents pour le texte
Un scrim assombrit une partie d’une image pour que le texte posé dessus se lise, puis s’efface jusqu’à la transparence totale pour que le reste de la photo reste lumineux. Un fondu à deux arrêts fonctionne, mais sa rampe droite laisse une ligne visible là où l’assombrissement s’arrête. Davantage d’arrêts, espacés pour adoucir la fin, masquent ce bord.
linear-gradient(to top, rgb(2 6 23 / 0.8) 0%, rgb(2 6 23 / 0.62) 15%, rgb(2 6 23 / 0.42) 30%, rgb(2 6 23 / 0.24) 48%, rgb(2 6 23 / 0.1) 66%, rgb(2 6 23 / 0.03) 82%, rgb(2 6 23 / 0) 100%).card {
background-image:
linear-gradient(to top,
rgb(2 6 23 / 0.8) 0%, rgb(2 6 23 / 0.62) 15%, rgb(2 6 23 / 0.42) 30%,
rgb(2 6 23 / 0.24) 48%, rgb(2 6 23 / 0.1) 66%, rgb(2 6 23 / 0.03) 82%,
rgb(2 6 23 / 0) 100%),
url("/images/coast.jpg");
background-size: cover;
color: #f8fafc;
}Teintez le scrim d’une version profonde de la couleur de la photo plutôt que de noir pur, et il fera partie de l’image. Sur une photo de coucher de soleil chaude, un brun profond comme rgb(41 20 8 / 0.75) se fond dans l’image, là où le noir ressemblerait à un filtre posé dessus. Les voiles en dégradé en CSS traite des lavis de couleur et des modes de fusion, et le texte sur une image du placement.
Trous transparents et projecteurs
Inversez l’idée : transparent au centre, sombre à l’extérieur. Un dégradé radial posé sur une page ou une image laisse une zone éclairée et atténue discrètement tout le reste, ce qui convient aux conseils d’accueil, aux gros plans produit et aux diapositives.
.spotlight::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background: radial-gradient(
circle at var(--x, 50%) var(--y, 40%),
transparent 0 140px,
rgb(2 6 23 / 0.72) 220px
);
}--x et --y en JavaScript pour déplacer le projecteur. Le fondu de 80 pixels entre les arrêts garde le bord doux.Sans aucun modelage, les mots rivalisent avec la partie la plus lumineuse du fond.
Le fond s’apaise de lui-même derrière les mots, le rôle que joue un scrim sur un site web.
Pour les publications sociales et l’imprimé, vous avez rarement besoin de construire des scrims à la main. Dans Gradiently, le Mark lui-même fait de la place à vos mots, en approfondissant ou en éclaircissant les couleurs près des lettres, sans calque de voile à régler pour chaque taille.
Les questions qu’on nous pose
Comment faire un dégradé CSS qui s’efface vers la transparence ?
Utilisez une couleur à alpha nul comme dernier arrêt : linear-gradient(#7c3aed, transparent) ou, pour être explicite, linear-gradient(#7c3aed, rgb(124 58 237 / 0)).
Pourquoi mon dégradé vers transparent paraît-il gris ?
Les anciens navigateurs mélangent sans alpha prémultiplié : transparent (du noir transparent) grise le milieu. Fondez plutôt vers votre couleur à alpha nul.
Comment faire disparaître en fondu un texte ou une image en CSS ?
Utilisez mask-image avec un dégradé, comme mask-image: linear-gradient(#000 60%, transparent). L’élément s’efface sur n’importe quelle couleur de fond.
Qu’est-ce qu’un scrim en CSS ?
Un dégradé qui assombrit une partie d’une image derrière du texte et s’efface ailleurs jusqu’à la transparence, pour que le texte se lise et que l’image reste lumineuse.
Un dégradé CSS peut-il avoir un trou transparent ?
Oui. Un dégradé radial transparent au centre et sombre plus loin laisse un projecteur dégagé sur ce qui se trouve en dessous.
É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