CSS en web

CSS conic gradient: wielen, cirkeldiagrammen en glans

conic-gradient() laat kleur rond een punt draaien als de wijzer van een klok. Dat ene idee tekent kleurenwielen, cirkel- en donutdiagrammen, metaalglans en sterrenbursts.

GradientlyGeverifieerd Gradiently-account··4 min lezen
Cover: Found Dynamo · GR·787F·7V

De korte versie

  • Een CSS conic gradient plaatst kleuren rond een middelpunt, met de klok mee vanaf de bovenkant, in plaats van langs een lijn of in ringen naar buiten.
  • Kleurstops in een conic gradient gebruiken hoeken of percentages van een volledige draai, dus 25% en 90deg betekenen dezelfde positie.
  • Harde stops maken van een conic gradient segmenten, de snelste manier om in CSS een cirkeldiagram te tekenen.
  • Het sleutelwoord from roteert waar de draai begint en at verplaatst het middelpunt.
  • repeating-conic-gradient() herhaalt zijn stops rond de cirkel en tekent, gecombineerd met background-size, dambordpatronen en sterrenbursts.
Op deze pagina

Een CSS conic gradient laat kleur rond een middelpunt draaien, zoals een klokwijzer over zijn wijzerplaat gaat. Waar een lineair kleurverloop langs een lijn verandert en een radiaal kleurverloop naar buiten vanuit het midden, verandert conic-gradient() met de hoek. Hij begint bovenaan, loopt met de klok mee en wordt gebruikt overal waar CSS een afbeelding accepteert. Dat maakt hem het natuurlijke gereedschap voor kleurenwielen, cirkeldiagrammen, laadringen en de hoekige highlights van geborsteld metaal.

Een eenvoudig kleurenwielconic-gradient(#ef4444, #eab308, #22c55e, #06b6d4, #3b82f6, #a855f7, #ef4444)
Zeven stops, gelijkmatig verdeeld over een volledige draai. De eerste kleur aan het eind herhalen sluit de naad bovenaan.

Kies je tussen soorten kleurverlopen voor een ontwerp in plaats van de syntaxis te leren, dan zijn soorten kleurverlopen en de ontwerpgids over conic gradients betere beginpunten.

De syntaxis van 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%)
Alles voor de eerste komma is optioneel. Beide stoplijsten op de laatste twee regels tekenen hetzelfde kwartsegment.
OnderdeelVoorbeeldStandaard
Starthoekfrom 45degfrom 0deg, recht omhoog
Middelpuntat 30% 50%, at top leftat center
Interpolatiein oklch, in hsl longer huesRGB voor hexkleuren
Stoppositie90deg, 0.25turn, 25%gelijkmatig verdeeld over de draai
De onderdelen van conic-gradient(). Stoposities meten rond de cirkel, niet langs een lijn.

Hoeken lopen met de klok mee vanaf de bovenkant: 90deg is drie uur, 180deg is zes. De volledige definitie staat op de conic-gradient()-pagina van MDN. Browserondersteuning is al jaren universeel in de huidige Chrome, Edge, Safari en Firefox, dus voorvoegsels zijn niet nodig.

De draai roteren en verplaatsen

from roteert het hele kleurverloop, handig als de naad tussen de eerste en laatste kleur anders bovenaan zou zitten. at verplaatst het middelpunt. Naar een hoek verplaatst wordt het wiel een waaier van stralen, en helemaal buiten het vak verplaatst geeft het een zachte schuine wassing die niets meer op een wiel lijkt.

Dezelfde familie van indigo, violet en roze, geroteerd en verplaatst. In de hoekversie vult een kwartslag het vak.

Cirkel- en donutdiagrammen in CSS

Geef elk segment een begin en een eind en laat elk beginnen waar het vorige eindigde. 0 schrijven als tweede stoppositie is een sluiproute: een positie kleiner dan de vorige wordt eraan vastgezet, dus de nieuwe kleur begint precies waar de vorige eindigde. Rond het element af met border-radius: 50% en knip een gat met een radiaal masker om van de taart een donut te maken.

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%);
}
Een taart met vier segmenten, en de ene regel die er een donut van maakt. Gebruik aangepaste eigenschappen voor de percentages als de data verandert.
Taartsegmenten: 40, 25, 20 en 15%conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #f59e0b 0 85%, #e2e8f0 0)
De achtergrond van de taart op zichzelf. Op een rond element leest hij als een diagram.

Harde randen in conic gradients kunnen in sommige browsers iets gekarteld lijken langs de segmentlijnen. Stoort het je, laat dan een fractie van een graad tussen stops, zoals #6366f1 0 39.8%, #22d3ee 40.2% 65%, zodat de rand een haartje menging krijgt.

Kleurenwielen met tintinterpolatie

Een kleurenwiel heeft meestal zes of zeven stops nodig. Met interpolatiemethoden kun je de browser zelf de tintencirkel laten afleggen. longer hue neemt de lange weg tussen twee tinten, en als beide stops dezelfde kleur zijn is de lange weg de hele cirkel, dus twee keer rood geeft een volledig spectrum.

css
.wheel {
  border-radius: 50%;
  background: conic-gradient(in hsl longer hue, #ff0000, #ff0000);
}
Eén kleur, twee keer, en een volledige regenboog ertussen. OKLCH-kleurverlopen leggen kortere en langere tint uit.

Metaalglans en highlights

Echt geborsteld metaal en gepolijste schijven vangen licht in hoekige banden, precies wat een conic gradient tekent. Wissel enkele lichte en donkere grijstinten af, met ongelijke tussenruimten, en het oppervlak leest als metaal. Met lage dekking over een kleur gelegd geeft hetzelfde trucje glans aan knoppen en kaarten; zie kleurverloopknoppen voor een uitgewerkt voorbeeld.

Ongelijke lichte en donkere banden rond het midden lezen als gepolijst metaal.

Herhalende conic gradients voor patronen

repeating-conic-gradient() herhaalt zijn stoplijst rond de draai. Korte stops met harde randen geven sterrenbursts. Gecombineerd met background-size tegelt een tweekleurig kwartpatroon tot een dambord, een patroon dat anders lastig met kleurverlopen te tekenen is. Meer in CSS-patronen.

Korte harde stops helemaal rond herhaald.
css
.checkerboard {
  background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 32px 32px;
}
Een dambord van 16 pixels: het klassieke transparantieraster achter beeldbewerkers.

Vragen die mensen stellen

Wat is een conic gradient in CSS?

Het is een kleurverloop waarvan de kleuren veranderen met de hoek rond een middelpunt, beginnend bovenaan en met de klok mee, geschreven met conic-gradient().

Hoe maak ik een cirkeldiagram met CSS?

Gebruik harde stops in een conic gradient, zoals conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #e2e8f0 0), op een element met border-radius: 50%. Zet de waarden ook in tekst voor schermlezers.

Hoe roteer ik een conic gradient?

Voeg from en een hoek toe als eerste argument, bijvoorbeeld conic-gradient(from 90deg, ...). De draai begint dan bij drie uur in plaats van bovenaan.

Waarom zijn de randen van mijn conic gradient gekarteld?

Harde stops hebben geen menging, en sommige browsers tekenen de grens zonder afvlakking. Een fractie van een graad tussen naburige stops verzacht het.

Werken conic gradients in alle browsers?

Ja, huidige versies van Chrome, Edge, Safari en Firefox ondersteunen conic-gradient() en repeating-conic-gradient() zonder voorvoegsels.

Deel deze gids

Geschreven door GradientlyGeverifieerd Gradiently-account

Het team achter Gradiently, een ontwerptool rond Marks: levende kleurverlopen die alles wat je ontwerpt op jou laten lijken.

Bekijk ons profiel