Kortversjonen
- Gradienttekst i CSS lages ved å male en gradient som elementets bakgrunn, klippe den til bokstavformene med background-clip: text og gjøre tekstfargen gjennomsiktig.
- Sett alltid en heldekkende tekstfarge først, og bruk den gjennomsiktige fargen bare inne i en @supports-sjekk, så ordene aldri forsvinner.
- Hver del av gradienten trenger nok kontrast mot bakgrunnen, så sjekk de lyseste og mørkeste stoppene, ikke bare ett.
- Gradienttekst passer til korte visningslinjer i stor størrelse, og fungerer dårlig til brødtekst, lenker og små etiketter.
- Å legge til box-decoration-break: clone gir hver linje i et innebygd element som brytes, sin egen fulle gradient.
På denne siden
Gradienttekst i CSS lages ved å male en gradient som bakgrunn på tekstelementet, klippe bakgrunnen til bokstavformene med background-clip: text og gjøre selve teksten gjennomsiktig så gradienten skinner gjennom. Det tar tre deklarasjoner, virker i alle gjeldende nettlesere og forblir ekte, markerbar, søkbar tekst i stedet for et bilde.
.gradient-text {
background-image: linear-gradient(90deg, #6d28d9, #be185d);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}linear-gradient(90deg, #6d28d9, #be185d)Resten av denne guiden tar for seg det versjonen på tre linjer gjør galt: manglende reserver, kontrast, tekst på flere linjer, avklippede nedstrekene og designspørsmålet om når gradienttekst i det hele tatt hjelper. For uttrykket til gradientbokstaver i sosiale medier og merkevarearbeid i stedet for på nettet, se teksteffekter.
En robust oppskrift på gradienttekst med reserver
Hvis en nettleser bruker color: transparent men ikke klippingen, forsvinner teksten. Sikre deg mot det: gi elementet en heldekkende farge hentet fra gradienten, og bytt til den gjennomsiktige versjonen først når nettleseren bekrefter støtte. Legg til en tilbakestilling for tvungne farger, der systemet erstatter fargene dine og teksten må forbli synlig.
.gradient-text {
color: #6d28d9; /* solid fallback from the gradient */
}
@supports (background-clip: text) or (-webkit-background-clip: text) {
.gradient-text {
background-image: linear-gradient(90deg, #6d28d9, #be185d);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
}
@media (forced-colors: active) {
.gradient-text {
background: none;
color: CanvasText;
}
}MDN-siden om background-clip dokumenterer verdien text og dens gjeldende støtte.
Kontrast: sjekk begge ender av gradienten
En kontrastsjekker tar én tekstfarge, men gradienttekst har mange. Ordene er bare så lesbare som den svakeste delen, så sjekk det lyseste og det mørkeste stoppet mot bakgrunnen, og se på midten også, for en sRGB-blanding kan bli lysere eller mattere enn begge ender. For stor visningstekst krever WCAG minst 3:1, og for vanlig tekst 4,5:1. Fargekontrast forklarer forholdene.
Retting av gradienttekst på flere linjer og avklippede bokstaver
På et innebygd element som brytes, legger nettleseren én bakgrunn over alle linjene som om de var en enkelt stripe, så første linje får starten av gradienten og siste linje får enden. Som regel vil du at hver linje skal bære hele gradienten. box-decoration-break: clone gjør det. På blokkelementer, som en overskrift, spenner gradienten allerede over hele boksen, så en lang gradient over en bred overskrift kan bare vise midten på korte linjer.
.gradient-text {
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
/* stop descenders being cut off */
line-height: 1.15;
padding-block-end: 0.08em;
}Avklippede nedstrekene er den andre overraskelsen. Bakgrunnen maler bare elementets boks, så med en veldig stram line-height blir delene av bokstaver som henger under den, stående gjennomsiktige og forsvinner. En linjehøyde på omtrent 1,1 eller litt padding nederst retter det. Kursive visningsskrifter kan miste tuppen på siste bokstav til høyre av samme grunn, og litt indre padding hjelper.
Når gradienttekst fungerer, og når den ikke gjør det
Unngå
- Brødtekst, der fargeskiftet bremser lesingen
- Lenker og knapper, der farge signaliserer tilstand
- Små etiketter under omtrent 24 px, der gradienten uansett er usynlig
- Regnbuegradienter med fem eller flere fargetoner
- Gradienttekst på en gradientbakgrunn
Bruk den til
- Ett ord eller en kort frase i en stor overskrift
- Et produkt- eller merkenavn i en hero
- Store tall i en tallblokk
- To eller tre beslektede fargetoner med lik lyshet
- Enkle, rolige bakgrunner som lar bokstavene lede
En god regel: gradienttekst er en aksent, som kursiv. Ett uthevet ord i en overskrift drar blikket, mens et helt avsnitt av det sliter det ut. Tunge snitt hjelper, for tynne streker viser ikke nok farge til å leses som en gradient. Hvis resten av siden allerede bruker gradientbakgrunner, er flat skrift som regel det sterkeste valget, og tekst på gradientbakgrunner tar for seg det tilfellet.
Å animere gradienttekst
For å få farge til å flyte gjennom bokstavene gjør du bakgrunnen større enn teksten og flytter den. Gjør den 200 % bred og animer background-position fram og tilbake med alternate, så det aldri blir et hopp der løkken starter på nytt. Respekter innstillinger for redusert bevegelse, og hold den langsom: en skimring hvert par sekund leses som finpuss, mens en rask syklus leses som en advarsel.
.gradient-text--flow {
background-image: linear-gradient(90deg, #6d28d9, #be185d, #c2410c);
background-size: 200% 100%;
animation: flow 6s ease-in-out infinite alternate;
}
@keyframes flow {
from { background-position: 0% 50%; }
to { background-position: 100% 50%; }
}
@media (prefers-reduced-motion: reduce) {
.gradient-text--flow { animation: none; }
}De samme bakgrunnstriksene driver animerte gradienter i CSS mer generelt, og gradientomriss i stedet for fyll er omtalt i gradientkanter i CSS.
Spørsmål folk stiller
Hvordan lager jeg gradienttekst i CSS?
Sett en gradient som background-image, legg til -webkit-background-clip: text og background-clip: text, og sett color: transparent. Sett en heldekkende farge utenfor en @supports-sjekk som reserve.
Hvorfor er gradientteksten min usynlig?
Teksten er gjennomsiktig, men bakgrunnen klippes ikke, som regel fordi klippedeklarasjonen mangler, er feilstavet eller ikke støttes. Bruk color: transparent bare inne i @supports (background-clip: text).
Er gradienttekst tilgjengelig?
Den kan være det, hvis hver del av gradienten har nok kontrast mot bakgrunnen og teksten forblir ekte tekst. Sjekk de lyseste og mørkeste stoppene, og tilbakestill farger i tvungen fargemodus.
Hvorfor er bunnen av bokstavene mine kuttet?
Den klippede bakgrunnen dekker bare elementets boks, så en stram linjehøyde lar nedstrekene havne utenfor. Øk linjehøyden til omtrent 1,1 eller legg til litt padding nederst.
Kan jeg bruke gradienttekst i e-post?
Støtten for background-clip: text er ujevn på tvers av e-postklienter, så bruk en heldekkende farge eller et bilde med alt-tekst der. Se gradienter i e-post.
Skrevet av Gradiently
Teamet bak Gradiently, et designverktøy bygget rundt Marks: levende gradienter som gjør at alt du designer ser ut som ditt.
Se profilen vår


