CSS og nett

CSS conic gradient: hjul, kakediagrammer og glans

conic-gradient() sveiper farge rundt et punkt som viseren på en klokke. Den ene ideen tegner fargehjul, kakediagrammer, smultringdiagrammer, metallglans og stjerneutbrudd.

GradientlyVerifisert Gradiently-konto··4 min lesetid
Omslag: Found Dynamo · GR·787F·7V

Kortversjonen

  • En konisk gradient i CSS plasserer farger rundt et sentrum og sveiper med klokka fra toppen, i stedet for langs en linje eller utover i ringer.
  • Fargestopp i en konisk gradient bruker vinkler eller prosenter av en full omdreining, så 25 % og 90deg betyr samme posisjon.
  • Harde stopp gjør en konisk gradient til stykker, som er den raskeste måten å tegne et kakediagram i CSS på.
  • Nøkkelordet from roterer hvor sveipet starter, og at flytter sentrum.
  • repeating-conic-gradient() gjentar stoppene rundt sirkelen og tegner sjakkbrett og stjerneutbrudd sammen med background-size.
På denne siden

En konisk gradient i CSS sveiper farge rundt et sentrum, slik en klokkeviser sveiper rundt skiven. Der en lineær gradient endrer seg langs en linje og en radiell gradient endrer seg utover fra sentrum, endrer conic-gradient() seg med vinkelen. Den starter øverst, går med klokka og kan brukes overalt CSS tar et bilde. Det gjør den til det naturlige verktøyet for fargehjul, kakediagrammer, lasteringer og de vinkelrette høylysene i børstet metall.

Et enkelt fargehjulconic-gradient(#ef4444, #eab308, #22c55e, #06b6d4, #3b82f6, #a855f7, #ef4444)
Sju stopp, jevnt fordelt rundt en full omdreining. Å gjenta den første fargen på slutten lukker sømmen øverst.

Velger du mellom gradienttyper til et design i stedet for å lære syntaksen, er typer gradienter og designguiden om koniske gradienter bedre utgangspunkt.

Syntaksen til conic-gradient()

css
/*               start angle   centre        stops */
conic-gradient(from 90deg at 30% 50%, #0ea5e9, #6366f1, #0ea5e9)

/* stops as angles or as percentages of the turn */
conic-gradient(#f59e0b 0deg 90deg, #1e293b 90deg)
conic-gradient(#f59e0b 0% 25%, #1e293b 25%)
Alt før det første kommaet er valgfritt. Begge stopplistene på de to siste linjene tegner det samme kvartstykket.
DelEksempelStandard
Startvinkelfrom 45degfrom 0deg, rett opp
Sentrumat 30% 50%, at top leftat center
Interpolasjonin oklch, in hsl longer huesRGB for hex-farger
Stoppposisjon90deg, 0.25turn, 25%jevnt fordelt rundt omdreiningen
Delene av conic-gradient(). Stoppposisjoner måles rundt sirkelen, ikke langs en linje.

Vinkler går med klokka fra toppen: 90deg er klokka tre, 180deg er klokka seks. Hele definisjonen står på MDNs side om conic-gradient(). Nettleserstøtten har vært universell i gjeldende Chrome, Edge, Safari og Firefox i årevis, så prefikser trengs ikke.

Å rotere og flytte sveipet

from roterer hele gradienten, noe som er nyttig når sømmen mellom første og siste farge ellers ville havnet øverst. at flytter sentrum. Flytter du det til et hjørne, blir hjulet til en vifte av stråler, og flytter du det helt utenfor boksen, får du en mild vinklet strøk som ikke ligner et hjul i det hele tatt.

Den samme familien av indigo, fiolett og rosa, rotert og flyttet. I hjørneversjonen fyller en kvart omdreining boksen.

Kake- og smultringdiagrammer i CSS

Gi hvert stykke en start og en slutt, og la hvert begynne der det forrige sluttet. Å skrive 0 som andre stoppposisjon er en snarvei: en posisjon som er mindre enn den forrige, klemmes til den, så den nye fargen starter nøyaktig der den siste endte. Runde av elementet med border-radius: 50%, og klipp et hull med en radiell maske for å gjøre kaken til en smultring.

css
.pie {
  width: 12rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: conic-gradient(
    #6366f1 0 40%,   /* 40% */
    #22d3ee 0 65%,   /* 25% */
    #f59e0b 0 85%,   /* 20% */
    #e2e8f0 0        /* the rest, 15% */
  );
}

.donut {
  /* same background as .pie, then a hole */
  mask: radial-gradient(farthest-side, transparent 58%, #000 59%);
}
En kake med fire stykker, og den ene linjen som gjør den til en smultring. Bruk egendefinerte egenskaper til prosentene hvis dataene endres.
Kakestykker: 40, 25, 20 og 15 %conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #f59e0b 0 85%, #e2e8f0 0)
Kakens bakgrunn alene. På et rundt element leses den som et diagram.

Harde kanter i koniske gradienter kan se litt hakkete ut langs stykkelinjene i noen nettlesere. Hvis det plager deg, la det være en brøkdel av en grad mellom stoppene, for eksempel #6366f1 0 39.8%, #22d3ee 40.2% 65%, så kanten får et hårstrå av blanding.

Fargehjul med fargetoneinterpolasjon

Et fargehjul trenger vanligvis seks eller sju stopp. Med interpolasjonsmetoder kan du be nettleseren om å gå fargetonesirkelen selv. longer hue tar den lange veien rundt mellom to fargetoner, og når begge stoppene har samme farge, er den lange veien hele sirkelen, så to røde gir et fullt spektrum.

css
.wheel {
  border-radius: 50%;
  background: conic-gradient(in hsl longer hue, #ff0000, #ff0000);
}
Én farge, to ganger, og en full regnbue imellom. OKLCH-gradienter forklarer shorter og longer hue.

Metallglans og høylys

Ekte børstet metall og polerte skiver fanger lys i vinkelbånd, og det er nøyaktig det en konisk gradient tegner. Veksle noen lyse og mørke gråtoner med ujevn avstand, så leses flaten som metall. Lagt lag på lag med lav dekning over en farge gir det samme trikset glans til knapper og kort. Se gradientknapper for et gjennomarbeidet eksempel.

Ujevne lyse og mørke bånd sveipet rundt sentrum leses som polert metall.

Repeterende koniske gradienter til mønstre

repeating-conic-gradient() gjentar stopplisten rundt omdreiningen. Korte stopp med harde kanter gir stjerneutbrudd. Sammen med background-size legges et kvartmønster i to farger som fliser til et sjakkbrett, et mønster som ellers er tungvint å tegne med gradienter. Mer i CSS-mønstre.

Korte harde stopp gjentatt hele veien rundt.
css
.checkerboard {
  background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 32px 32px;
}
Et sjakkbrett på 16 piksler: det klassiske gjennomsiktighetsrutenettet bak bilderedigerere.

Spørsmål folk stiller

Hva er en konisk gradient i CSS?

Det er en gradient der fargene endrer seg med vinkelen rundt et sentrum, fra toppen og med klokka, skrevet med conic-gradient().

Hvordan lager jeg et kakediagram med CSS?

Bruk harde stopp i en konisk gradient, for eksempel conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #e2e8f0 0), på et element med border-radius: 50%. Sett også verdiene i tekst for skjermlesere.

Hvordan roterer jeg en konisk gradient?

Legg til from og en vinkel som første argument, for eksempel conic-gradient(from 90deg, ...). Sveipet starter da klokka tre i stedet for øverst.

Hvorfor er kantene på den koniske gradienten min hakkete?

Harde stopp har ingen blanding, og noen nettlesere tegner grensen uten utjevning. Å la det være en brøkdel av en grad mellom nabostopp mykner den.

Fungerer koniske gradienter i alle nettlesere?

Ja, gjeldende versjoner av Chrome, Edge, Safari og Firefox støtter conic-gradient() og repeating-conic-gradient() uten prefikser.

Del denne guiden

Skrevet av GradientlyVerifisert Gradiently-konto

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