Kort fortalt
- For at gøre en CSS-gradient gennemsigtig bruger du en farve med nul alfa som ét af farvestoppene, for eksempel transparent eller rgb(124 58 237 / 0).
- Moderne browsere interpolerer gradientfarver med præmultipliceret alfa, så en tone fra en farve til nøgleordet transparent giver ikke længere et gråt bånd.
- En baggrundsgradient kan kun tone baggrunden ud; for at tone et elements faktiske indhold ud bruger du mask-image med en gradient.
- En scrim med flere bløde stop ser jævnere ud end en fade med to stop, som viser en synlig kant, hvor mørkningen holder op.
- En radial gradient, der er gennemsigtig i midten og mørk udenfor, laver et spotlight, som drager opmærksomheden mod ét område.
På denne side
For at gøre en CSS-gradient gennemsigtig giver du ét af farvestoppene en farve med nul alfa: linear-gradient(to bottom, #7c3aed, transparent) toner violet ud til ingenting, så det, der ligger nedenunder, skinner igennem. Brug samme idé til fades for enden af tekst, mørke scrims bag billedtekster og farvede overlays på fotos. Skal du tone et elements indhold ud i stedet for dets baggrund, bruger du mask-image med en gradient.
Måder at skrive en gennemsigtig farve på
transparentBetyder
Brug den, når
rgb(124 58 237 / 0)Betyder
Brug den, når
rgb(124 58 237 / 0.4)Betyder
Brug den, når
#7c3aed66Betyder
Brug den, når
color-mix(in srgb, var(--brand) 40%, transparent)Betyder
Brug den, når
color-mix() virker på en farve, du kun kender som variabel; se color-mix() i CSS.Hvorfor fades plejede at blive grå
Nøgleordet transparent er sort med nul alfa. Tidlige browsere blandede rød, grøn og blå kanal og alfakanalen hver for sig, så en fade fra hvid til transparent passerede halvgennemsigtig grå på vejen. Det er derfor, ældre tutorials insisterer på rgba(255, 255, 255, 0) i stedet.
Specifikationen kræver nu præmultipliceret alfa: hver farve vægtes efter sin dækkende evne, før den blandes, så et helt gennemsigtigt stop slet ikke bidrager med farve. Alle nuværende browsere gør det. At skrive den matchende farve med nul alfa er stadig en harmløs vane, og den holder dig på den sikre side i mailklienter og gamle WebViews.
Gammel opførsel
- Hvid til
transparentdypper omkring grå - Farvekanaler blandet uden hensyn til dækkevne
- Løsning: gentag farven med nul alfa
Nuværende browsere
- Hvid til
transparentforbliver hvid, mens den toner ud - Præmultipliceret alfa, som specifikationen kræver
- Begge former virker; den eksplicitte er mere portabel
Hvor fadet slutter, betyder lige så meget som farverne. Et stop ved 70 procent afslutter fadet tidligt og lader resten af boksen stå helt klar, hvilket er ideelt til en tone, der kun skal røre én kant. To stop på samme position giver et hårdt skift fra farve til ingenting, nyttigt til halvfyldte bjælker og delte baggrunde. Stoppositioner er forklaret i CSS linear gradienter.
Fade indhold ud med mask-image
En baggrundsgradient ligger bag indholdet, så den kan ikke tone tekst, billeder eller en rullende liste ud. En maske kan. Med mask-image holder gradientens dækkende dele elementet synligt, mens de gennemsigtige dele skjuler det. Maskens farve er ligegyldig, kun dens alfa tæller.
/* 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 uden præfiks virker i nuværende browsere; tilføj -webkit-mask-image til ældre Safari.Det gamle alternativ var en hvid gradient lagt over indholdet. Den går i stykker, så snart siden ikke er hvid, for eksempel i mørk tilstand, og den blokerer klik, medmindre du husker pointer-events: none. En maske har ingen af de problemer.
Scrims: gennemsigtige gradienter til tekst
En scrim mørkner en del af et billede, så teksten på det kan læses, og toner ud til fuldt gennemsigtig, så resten af fotoet forbliver lyst. En fade med to stop virker, men dens lige rampe efterlader en synlig streg, hvor mørkningen ender. Flere stop, fordelt så de glider blødt ud, skjuler kanten.
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;
}Tone scrimmen med en dyb version af fotoets farve frem for ren sort, så føles den som en del af billedet. På et varmt solnedgangsfoto synker en dyb brun som rgb(41 20 8 / 0.75) ind i billedet, hvor sort ville ligne et filter lagt oveni. Gradient-overlays i CSS dækker farvelag og blandingstilstande, og tekst over billeder dækker placering.
Gennemsigtige huller og spotlights
Vend idéen om: gennemsigtig i midten, mørk udenfor. En radial gradient lagt over en side eller et billede efterlader ét område oplyst og dæmper stille alt andet, hvilket passer til onboarding-tips, nærbilleder af produkter og slides.
.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 og --y fra JavaScript for at flytte spotlightet. Overgangen på 80 pixel mellem stoppene holder kanten blød.Uden nogen form for formgivning konkurrerer ordene med baggrundens lyseste del.
Baggrunden dæmper sig selv bag ordene, det samme job en scrim gør på et website.
Til opslag på sociale medier og print har du sjældent brug for at bygge scrims i hånden. I Gradiently gør selve Marken plads til dine ord og uddyber eller løfter farverne nær bogstaverne, uden et overlaylag, du skal finjustere for hver størrelse.
Spørgsmål, folk stiller
Hvordan får jeg en CSS-gradient til at tone ud til transparent?
Brug en farve med nul alfa som sidste stop: linear-gradient(#7c3aed, transparent) eller, for at være eksplicit, linear-gradient(#7c3aed, rgb(124 58 237 / 0)).
Hvorfor ser min gradient til transparent grå ud?
Ældre browsere blander uden præmultipliceret alfa, så transparent (gennemsigtig sort) gør midten grå. Tone i stedet ud til din farve med nul alfa.
Hvordan toner jeg tekst eller et billede ud med CSS?
Brug mask-image med en gradient, for eksempel mask-image: linear-gradient(#000 60%, transparent). Elementet toner ud på enhver baggrundsfarve.
Hvad er en scrim i CSS?
En gradient, der mørkner en del af et billede bag tekst og toner ud til gennemsigtig andre steder, så teksten kan læses, og billedet forbliver lyst.
Kan en CSS-gradient have et gennemsigtigt hul?
Ja. En radial gradient, der er gennemsigtig i midten og mørk længere ude, efterlader et klart spotlight over det, der ligger nedenunder.
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