Kort fortalt
- Gradienttekst i CSS virker ved at male en gradient som elementets baggrund, klippe den til bogstavernes form med background-clip: text og gøre tekstfarven gennemsigtig.
- Sæt altid en massiv tekstfarve først, og anvend den gennemsigtige farve kun inde i et @supports-tjek, så ordene aldrig forsvinder.
- Hver del af gradienten har brug for nok kontrast mod baggrunden, så tjek de lyseste og mørkeste stop og ikke kun ét.
- Gradienttekst passer til korte displaylinjer i store størrelser og virker dårligt til brødtekst, links og små labels.
- Tilføjer du box-decoration-break: clone, får hver linje i et ombrudt inline-element sin egen fulde gradient.
På denne side
Gradienttekst i CSS laves ved at male en gradient som baggrund på tekstelementet, klippe baggrunden til bogstavernes former med background-clip: text og gøre selve teksten gennemsigtig, så gradienten skinner igennem. Det kræver tre erklæringer, virker i alle nuværende browsere og forbliver rigtig, markérbar og søgbar tekst og ikke et billede.
.gradient-text {
background-image: linear-gradient(90deg, #6d28d9, #be185d);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}linear-gradient(90deg, #6d28d9, #be185d)Resten af denne guide handler om det, treliniers-versionen gør forkert: manglende reserver, kontrast, tekst over flere linjer, afskårne underlængder og designspørgsmålet om, hvornår gradienttekst overhovedet hjælper. For udtrykket i gradientbogstaver i sociale medier og brandarbejde frem for på nettet, se teksteffekter.
En robust opskrift på gradienttekst med reserver
Hvis en browser anvender color: transparent, men ikke klippet, forsvinder teksten. Sikr dig mod det: giv elementet en massiv farve hentet fra gradienten, og skift først til den gennemsigtige version, når browseren bekræfter understøttelse. Tilføj en nulstilling til tvunget farvetilstand, hvor systemet erstatter dine farver, og teksten skal forblive 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’s side om background-clip dokumenterer værdien text og dens nuværende understøttelse.
Kontrast: tjek begge ender af gradienten
Et kontrastværktøj tager én tekstfarve, men gradienttekst har mange. Ordene er kun så læsbare som deres svageste del, så tjek det lyseste og det mørkeste stop mod baggrunden, og se også på midten, for en sRGB-blanding kan dykke lysere eller mattere end begge ender. Til stor displaytekst kræver WCAG mindst 3:1, til normal tekst 4,5:1. Farvekontrast forklarer forholdene.
Ret gradienttekst over flere linjer og afskårne bogstaver
På et inline-element, der ombrydes, lægger browseren én baggrund hen over alle linjerne, som var de én strimmel, så første linje får begyndelsen af gradienten og sidste linje får enden. Som regel vil du have, at hver linje bærer hele gradienten. box-decoration-break: clone gør det. På blokelementer som en overskrift dækker gradienten allerede hele boksen, så en lang gradient hen over en bred overskrift kan kun vise sin midte 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;
}Afskårne underlængder er den anden overraskelse. Baggrunden maler kun elementets boks, så med en meget stram line-height bliver de dele af bogstaverne, der hænger under den, gennemsigtige og forsvinder. En linjehøjde på omkring 1,1 eller lidt padding forneden løser det. Kursive displayskrifter kan miste spidsen af det sidste bogstav til højre af samme grund. Lidt inline-padding hjælper.
Hvornår gradienttekst virker, og hvornår ikke
Undgå
- Brødtekst, hvor farveskiftet gør læsningen langsommere
- Links og knapper, hvor farve signalerer tilstand
- Små labels under omkring 24 px, hvor gradienten alligevel er usynlig
- Regnbuegradienter med fem eller flere farvetoner
- Gradienttekst på en gradientbaggrund
Brug den til
- Ét ord eller en kort frase i en stor overskrift
- Et produkt- eller brandnavn i en hero
- Store tal i en statistikblok
- To eller tre beslægtede farvetoner med ens lysstyrke
- Enkle, rolige baggrunde, der lader bogstaverne føre
En god regel: gradienttekst er en accent, som kursiv. Ét fremhævet ord i en overskrift trækker blikket. Et helt afsnit af den trætter det. Tunge skriftsnit hjælper, for tynde streger viser ikke nok farve til at læses som en gradient. Bruger resten af siden allerede gradientbaggrunde, er flad typografi som regel det stærkeste valg. Tekst på gradientbaggrunde dækker det tilfælde.
Animér gradienttekst
For at få farve til at flyde gennem bogstaverne gør du baggrunden større end teksten og flytter den. Gør den 200 % bred, og animér background-position frem og tilbage med alternate, så der aldrig er et spring, hvor løkken genstarter. Respektér indstillinger for reduceret bevægelse, og hold den langsom: et glimmer hvert par sekunder læses som finish, en hurtig cyklus læses 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 baggrundstricks driver animerede gradienter i CSS mere bredt, og gradientkonturer frem for fyld dækkes i CSS-gradientkanter.
Spørgsmål, folk stiller
Hvordan laver jeg gradienttekst i CSS?
Sæt en gradient som background-image, tilføj -webkit-background-clip: text og background-clip: text, og sæt color: transparent. Læg en massiv farve uden for et @supports-tjek som reserve.
Hvorfor er min gradienttekst usynlig?
Teksten er gennemsigtig, men baggrunden bliver ikke klippet, som regel fordi klip-erklæringen mangler, er stavet forkert eller ikke understøttes. Anvend color: transparent kun inde i @supports (background-clip: text).
Er gradienttekst tilgængelig?
Det kan den være, hvis hver del af gradienten har nok kontrast med baggrunden, og teksten forbliver rigtig tekst. Tjek de lyseste og mørkeste stop, og nulstil farver i tvunget farvetilstand.
Hvorfor er bunden af mine bogstaver skåret af?
Den klippede baggrund dækker kun elementets boks, så en stram linjehøjde efterlader underlængder uden for den. Hæv linjehøjden til omkring 1,1, eller tilføj lidt padding forneden.
Kan jeg bruge gradienttekst i mails?
Understøttelsen af background-clip: text er ujævn på tværs af mailklienter, så brug en massiv farve eller et billede med alt-tekst dér. Se gradienter i mails.
Skrevet af Gradiently
Holdet bag Gradiently, et designværktøj bygget om Marks: levende gradienter, der får alt, du designer, til at ligne dig.
Se vores profil


