CSS och webb

CSS radial-gradient: former, storlekar och positioner

radial-gradient() ritar färg utåt från en punkt. Här är varje del av den, med levande exempel, plus lagertricken bakom mjuka sken, strålkastare och vinjetter.

GradientlyVerifierat Gradiently-konto··4 minuters läsning
Omslag: Cinder Ribbon · GR·3GXC·C6

Kortversionen

  • En radiell CSS-gradient sprider färg utåt från en mittpunkt och skrivs med funktionen radial-gradient() överallt där CSS tar emot en bild.
  • Som standard är en radiell gradient en ellips, centrerad i rutan och stor nog att nå det bortersta hörnet.
  • Storleksnyckelorden closest-side, closest-corner, farthest-side och farthest-corner avgör var det sista färgstoppet hamnar.
  • Nyckelordet at flyttar mitten, till exempel at 20% 30%, och positionerna fungerar som background-position.
  • Att lägga flera radiella gradienter som tonar ut till genomskinliga över varandra är standardsättet att bygga mjuka sken och meshliknande bakgrunder i CSS.
På den här sidan

En radiell CSS-gradient blandar färg utåt från en punkt, som ljus som sprider sig från en lampa. Du skriver den med radial-gradient() och använder den överallt där CSS tar en bild, oftast background-image. Utan några alternativ ritar den en ellips i mitten av rutan som når det bortersta hörnet: radial-gradient(#fef3c7, #b45309) ger en blek mitt som glöder ut till djup bärnsten.

Bärnstensglöd, alla standardvärdenradial-gradient(#fef3c7, #f59e0b 45%, #78350f)
En ellips, centrerad, stor nog att nå det bortersta hörnet. Så blir det när du bara anger färger.

Allt annat i funktionen ändrar en av tre saker: formen, storleken och positionen. När du kan styra dem ritar samma funktion sken, strålkastare, vinjetter, solstrålar och färgpölarna bakom en mesh-gradient i CSS. För designsidan av radiella övergångar, se den tillhörande guiden om radiella gradienter.

Syntaxen för radial-gradient()

css
/* shape  size          position        stops */
radial-gradient(circle closest-side at 30% 40%, #fde047, #ea580c 60%, #1c1917)

/* everything before the first comma is optional */
radial-gradient(#fde047, #ea580c)
Form och storlek kan komma i valfri ordning. Positionen följer alltid efter ordet at.
DelVärdenStandard
Formcircle eller ellipseellipse
Storlekett nyckelord, en längd för en cirkel, eller två längder eller procentvärden för en ellipsfarthest-corner
Positionat följt av vad som helst som background-position accepterarat center
Interpolationin oklab, in oklch och andra färgrymdersRGB för hexfärger
Färgstopptvå eller fler färger med valfria positionerobligatoriskt
Delarna i radial-gradient(). Bara färgstoppen är obligatoriska.

En regel förvånar många: en cirkels storlek måste vara en längd som 200px, aldrig procent, eftersom procent av en rektangel inte har någon enskild radie. Ellipser accepterar procent, som i ellipse 60% 40%. MDN:s referens för radial-gradient() listar hela grammatiken.

Cirkel eller ellips

En ellips sträcks med rutan, så på en bred banner blir skenet brett och på en hög story blir det högt. En cirkel förblir rund vad rutan än gör. Använd ellipser för bakgrunder som ska fylla sin behållare jämnt, och cirklar för allt som ska läsas som en ljuskälla, en planet eller en knapps sken.

Samma stopp från mynta till skogsgrön. På en bred platta sprider sig ellipsen i sidled men inte cirkeln.

Storleksnyckelord: closest-side till farthest-corner

Storleken avgör var det sista färgstoppet hamnar, alltså var gradientens slutform ligger. De fyra nyckelorden mäter från mitten till rutans närmaste eller bortersta sida eller hörn. De ser bara olika ut när mitten ligger vid sidan om centrum, så exemplen nedan börjar alla vid 30% 40%.

En sol, fyra storlekar. closest-side slutar vid närmaste kant, och farthest-corner, standardvärdet, når det hörn som ligger längst bort.

I praktiken passar closest-side för avgränsade former som prickar och märken, eftersom färgen aldrig rinner över närmaste kant. farthest-corner passar bakgrunder, eftersom blandningen täcker hela rutan. När du behöver exakt kontroll anger du en längd: circle 180px at 50% 0 är ett sken på 180 pixlar som hänger från överkanten.

Positionera med at

Nyckelordet at placerar mitten med samma värden som background-position: nyckelord som at top right, procent som at 20% 80% eller längder som at 40px 60px. Mitten kan till och med ligga utanför rutan, som i at 50% 120%, vilket ger ett horisontsken som stiger upp under nederkanten.

Att flytta mitten förändrar stämningen mer än att byta färger.

Lagrade radiella sken

Det mest användbara radiella mönstret är flera gradienter staplade i en enda background-image, var och en tonad till transparent, över en jämn mörk färg. Varje lager är en ljuspöl på sin egen plats. Eftersom det första lagret målas överst lägger du det ljusaste, minsta skenet först.

css
.glow {
  background-color: #0b0a1a;
  background-image:
    radial-gradient(circle at 20% 25%, rgb(124 58 237 / 0.55), transparent 45%),
    radial-gradient(circle at 80% 30%, rgb(236 72 153 / 0.45), transparent 40%),
    radial-gradient(ellipse at 50% 110%, rgb(56 189 248 / 0.4), transparent 60%);
}
Tre pölar av violett, rosa och himmelsblått på en nästan svart botten. Ändra en position och hela kompositionen förskjuts.

Två mönster till täcker det mesta som återstår. En vinjett mörkar kanterna: radial-gradient(ellipse, transparent 55%, rgb(0 0 0 / 0.55)) över ett foto. En strålkastare följer pekaren när du matar in dess position från anpassade egenskaper, som radial-gradient(circle 240px at var(--x) var(--y), rgb(255 255 255 / 0.15), transparent), med några rader JavaScript som sätter --x och --y vid pointermove.

Repeterande radiella gradienter

repeating-radial-gradient() upprepar sina stopp utåt tills rutan är full, så ett par hårda stopp blir ringar. Använd längder för stoppositionerna så att ringbredden hålls konstant. Det är grunden för vågor, måltavlor och halvtonsliknande texturer, och guiden om CSS-mönster tar upp mer.

Hårda stopp vid fasta längder gör en radiell gradient till ringar.

Undvik

  • Procent för en cirkels storlek, vilket är ogiltigt
  • Ljusa sken som slutar i en hård kant eftersom det sista stoppet är ogenomskinligt
  • Att centrera varje sken vid 50% 50%
  • Fem överlappande sken med lika stor styrka

Gör så här

  • Längder för cirklar, procent för ellipser
  • Tona varje sken till transparent
  • Placera sken vid sidan om mitten, nära hörn eller under kanten
  • Ett dominerande sken och ett eller två lugnare

Vanliga frågor

Hur gör jag en cirkelgradient i CSS?

Använd radial-gradient(circle, färg1, färg2). Med circle förblir formen rund, utan det får du en ellips som sträcks med rutan.

Hur flyttar jag mitten på en radiell gradient?

Lägg till at och en position efter formen och storleken, till exempel radial-gradient(circle at 20% 30%, #c4b5fd, #1e1b4b). Positionerna fungerar som background-position.

Vad betyder farthest-corner?

Det gör gradienten så stor att dess sista färgstopp når det hörn av rutan som ligger längst från mitten. Det är standardstorleken.

Kan en radiell cirkelgradient ha en storlek i procent?

Nej. En cirkel behöver en enda längd som 200px. Ellipser kan använda två procentvärden, som ellipse 60% 40%.

Hur gör jag en glödeffekt med CSS-gradienter?

Lägg ett eller flera radial-gradient()-värden som tonar från en halvgenomskinlig färg till transparent över en mörk background-color.

Dela den här guiden

Skriven av GradientlyVerifierat Gradiently-konto

Teamet bakom Gradiently, ett designverktyg byggt kring Marks: levande gradienter som får allt du gör att kännas som ditt.

Se vår profil