Markedet
Priser
Log indStart
DesignguidenCSS og web
CSS og web

CSS box shadow: bløde, lagdelte skygger, der ser ægte ud

En enkelt grå box-shadow er den hurtigste måde at få en brugerflade til at ligne en skabelon. Ægte skygger er flere skygger på én gang, tonede og mere dæmpede, end du tror.

GradientlyVerificeret Gradiently-konto·1. oktober 2026·5 min. læsning
Forside: Tape Cliff · GR·CY1K·VC

Kort fortalt

  • CSS-egenskaben box shadow tager et valgfrit inset-nøgleord, to forskydninger, en sløringsradius, en spredningsradius og en farve.
  • En enkelt box shadow ser kunstig ud, fordi ægte genstande kaster en skarp kontaktskygge og en bred blød skygge på samme tid.
  • At lægge tre til fem skygger i lag, hver med omkring dobbelt så stor forskydning og sløring som den forrige og lav opacitet, giver en blød, troværdig skygge.
  • At tone skyggen mod baggrundens farvetone ser mere naturligt ud end ren sort på farvede eller varme overflader.
  • At animere box-shadow tegner forfra i hver frame, så tone i stedet opaciteten af et pseudoelement, der bærer den større skygge.
På denne side
box-shadow-syntaksHvorfor en enkelt skygge ser falsk udSådan lægger du box shadows i lagEn højdeskala til en brugerfladeSkygger på farvede og mørke baggrundeAt animere box-shadow uden hakHvornår du skal springe skyggen over

En CSS box shadow skrives box-shadow: 0 4px 12px rgb(0 0 0 / 0.15): en vandret forskydning, en lodret forskydning, en sløringsradius, en valgfri spredning og en farve. Den ene skygge er fin til en hurtig prototype, men den ser sjældent ægte ud. De skygger, der overbeviser øjet, ligger i lag: flere skygger på ét element, hver større og svagere end den forrige, tonet til at passe til overfladen under.

box-shadow-syntaks

css
/* inset? | offset-x | offset-y | blur | spread | color */
.card { box-shadow: 0 4px 12px 0 rgb(0 0 0 / 0.15); }

/* Negative spread tucks the shadow under the box */
.card { box-shadow: 0 12px 24px -8px rgb(0 0 0 / 0.25); }

/* Inset: a shadow inside the box, like a pressed well */
.well { box-shadow: inset 0 2px 4px rgb(0 0 0 / 0.12); }

/* Spread only: a hairline that follows border-radius */
.chip { box-shadow: 0 0 0 1px rgb(15 23 42 / 0.08); }

/* Several shadows, comma separated, first on top */
.card { box-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 8px 16px rgb(0 0 0 / 0.08); }
Skyggen følger altid border-radius, og derfor giver en skygge med kun spredning en pæn afrundet hårstreg uden at ændre layoutet.
insetFra

Effekt

Tegner skyggen inden for kanten i stedet for uden for
Forskydning x og y

Standard

Påkrævet

Effekt

Flytter skyggen. Lys ovenfra betyder en positiv y
Sløring0

Effekt

Blødgør kanten. Større værdier spreder udtoningen bredere
Spredning

Standard

0

Effekt

Gør skyggen større eller mindre før sløring. Negativ trækker den ind
Farvecurrentcolor

Effekt

Brug en farve med alfa. Uigennemsigtige skygger ligner klistermærker
VærdiStandardEffekt
insetFraTegner skyggen inden for kanten i stedet for uden for
Forskydning x og yPåkrævetFlytter skyggen. Lys ovenfra betyder en positiv y
Sløring0Blødgør kanten. Større værdier spreder udtoningen bredere
Spredning0Gør skyggen større eller mindre før sløring. Negativ trækker den ind
FarvecurrentcolorBrug en farve med alfa. Uigennemsigtige skygger ligner klistermærker
Spredning er den værdi, de fleste springer over, og den, der retter mest. En lille negativ spredning forhindrer en stor sløring i at sive ud af siderne.

Hvorfor en enkelt skygge ser falsk ud

Læg en bog på et bord, og se på dens skygge. Lige ved kanten, hvor den rører, er skyggen mørk og skarp. Længere ude bliver den bred og svag, fordi lys omslutter genstanden fra mange retninger. Én box-shadow kan kun være en af de ting ad gangen: stram og hård eller bred og sløret. Uanset hvad opdager øjet, at der mangler noget.

Enkelt skygge

  • Én mellemstor sløring i 25 procent sort
  • Grå glorie hele vejen rundt om kortet
  • Svært at se, hvor højt kortet svæver
  • Ser snavset ud på farvede baggrunde

Lagdelt skygge

  • Fire skygger, hver svagere og bredere
  • Tæt nær kanten, luftig længere væk
  • Højden læses med et blik
  • Tonet, så den sidder naturligt på sin overflade

Sådan lægger du box shadows i lag

Metoden er enkel: start småt og skarpt, og fordobl så forskydning og sløring for hvert ekstra lag, mens hvert lag holdes svagt. Opaciteterne lægger sig sammen, hvor lagene overlapper, så de enkelte værdier kan være overraskende lave.

  1. 1

    Start med en kontaktskygge

    0 1px 1px ved omkring 8 procent opacitet. Det er den mørke streg lige under kanten.

  2. 2

    Fordobl for hvert lag

    Derefter 0 2px 2px, 0 4px 4px, 0 8px 8px. Forskydning og sløring vokser sammen, så lyset ser ud til at komme ovenfra.

  3. 3

    Hold hvert lag svagt

    Mellem 5 og 10 procent hver. Ser resultatet tungt ud, så fjern det største lag, før du gør noget mørkere.

  4. 4

    Tone farven

    Erstat sort med en dyb udgave af baggrundens farvetone, for eksempel en marineblå på blå sider eller en brun på creme.

css
:root {
  /* Shadow colour as channels, so opacity can vary per layer */
  --shadow-color: 222 47% 11%;

  --shadow-sm:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.06);

  --shadow-md:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.05);

  --shadow-lg:
    0 1px 1px hsl(var(--shadow-color) / 0.07),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.06),
    0 16px 16px hsl(var(--shadow-color) / 0.05),
    0 32px 32px hsl(var(--shadow-color) / 0.04);
}

.card { box-shadow: var(--shadow-md); }
.dialog { box-shadow: var(--shadow-lg); }
En højdeskala i tre trin som custom properties. Ret --shadow-color én gang, og hver skygge i systemet følger med.

At gemme skygger som variabler gør dem til design tokens, som holder hvert kort, hver menu og hver dialog ensartet. CSS-variabler til temaer og design tokens viser, hvordan du kobler dem ind i et helt tema.

En højdeskala til en brugerflade

Skygge er et signal om højde, så den bør betyde det samme overalt. Vælg tre eller fire niveauer, og tildel dem opgaver. Alt, der svæver højere, får en større, blødere skygge, aldrig bare en mørkere.

0ingen eller en hårstreg på 1px spredning

Bruges til

Inputfelter, tabelrækker, flade kort på en tonet side
1--shadow-sm

Bruges til

Kort i hvile, knapper, der skal føles som noget, man kan trykke på
2--shadow-md

Bruges til

Kort under musen, rullemenuer, popovers
3--shadow-lg

Bruges til

Dialoger, sheets, alt over en dæmpet side
NiveauTokenBruges til
0ingen eller en hårstreg på 1px spredningInputfelter, tabelrækker, flade kort på en tonet side
1--shadow-smKort i hvile, knapper, der skal føles som noget, man kan trykke på
2--shadow-mdKort under musen, rullemenuer, popovers
3--shadow-lgDialoger, sheets, alt over en dæmpet side
Fire niveauer dækker næsten enhver brugerflade. Flere end det, og folk kan ikke længere se forskel på dem.

Skygger på farvede og mørke baggrunde

Rent sorte skygger bliver grå og mudrede på en farvet overflade, på samme måde som sort blandet i maling gør den kedelig. Tag i stedet skyggefarven fra baggrunden: en dyb blågrøn skygge på en mynteside, en mørk blomme på en lilla. På gradientbaggrunde skal du vælge gradientens mørkeste stop og bruge det ved lav opacitet.

Tre sidefarver, hver med den skyggefarve, der passer til den. Brug skyggetonerne ved 5 til 10 procent pr. lag.

I mørk tilstand forsvinder skygger næsten, fordi der er lidt lys, de kan blokere. Vis højde ved i stedet at gøre hævede overflader en smule lysere, og behold en svag hårstreg ved kanten. Design af mørk tilstand gennemgår overfladefarverne. Til paneler, der svæver over billeder, adskiller et backdrop filter ofte lagene bedre end en kraftigere skygge.

At animere box-shadow uden hak

At ændre box-shadow ved hover tvinger browseren til at tegne skyggen forfra i hver frame af overgangen. På én knap er det fint. På et grid med halvtreds kort hakker det. Den almindelige løsning er at lægge den større skygge på et pseudoelement og tone dets opacitet, som browseren kan sammensætte billigt.

css
.card {
  position: relative;
  box-shadow: var(--shadow-sm);
}

.card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transition: opacity 200ms ease-out;
  pointer-events: none;
}

.card:hover::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .card::after { transition: none; }
}
Begge skygger males én gang. Hover ændrer kun opaciteten, så intet tegnes forfra under overgangen.

Mere om, hvad der koster maletid, står i CSS gradient-ydeevne, og den samme lagdelte tilgang passer til knapper i gradientknapper i CSS.

Hvornår du skal springe skyggen over

Skygger adskiller en overflade fra det, der er bag den. Er baggrunden en rig gradient eller et fotografi, kæmper en stærk skygge imod den. Ofte gør en roligere baggrund mere for kortet, end nogen skygge kan. Marks fra Gradiently er bygget til det: hver er en levende baggrund med sine egne farver, sit eget lys og korn, og de ord, du lægger over den, forbliver læselige, fordi Marken beroliger sig selv bag dem, uden bokse eller skygger, der gør arbejdet.

Find en gradient, der kun er din

Gennemse tusindvis af Marks, design med dem alle gratis, og sikr dig den, der føles som dig.

Gennemse Markedet

Spørgsmål, folk stiller

Hvad er værdierne i CSS box-shadow?

Et valgfrit inset, en vandret forskydning, en lodret forskydning, en sløringsradius, en spredningsradius og en farve, for eksempel 0 4px 12px 0 rgb(0 0 0 / 0.15).

Hvordan laver jeg en blød box shadow i CSS?

Læg tre til fem skygger i lag, med dobbelt forskydning og sløring hver gang, ved 5 til 10 procent opacitet hver. Tone dem mod baggrundsfarven.

Hvordan tilføjer jeg mere end én box shadow?

Adskil dem med kommaer i én box-shadow-deklaration. Den første skygge på listen tegnes øverst.

Hvad gør spredning i box-shadow?

Den gør skyggen større eller mindre, før den sløres. En negativ spredning forhindrer en stor sløring i at vise sig i boksens sider.

Er det dårligt for ydeevnen at animere box-shadow?

Det tegner forfra i hver frame. Læg hover-skyggen på et pseudoelement, og lav overgang på dets opacitet i stedet.

Del denne guide

Skrevet af GradientlyVerificeret Gradiently-konto

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

På denne side

box-shadow-syntaksHvorfor en enkelt skygge ser falsk udSådan lægger du box shadows i lagEn højdeskala til en brugerfladeSkygger på farvede og mørke baggrundeAt animere box-shadow uden hakHvornår du skal springe skyggen over

Del denne guide

Næste om CSS og web

color-mix() i CSS: bland farver i browseren

Læs videre

Alle guides om CSS og web
CSS og web

Backdrop filter i CSS: frosted glass, der forbliver hurtigt

5 min. læsning

Frosted glass tager tre linjer CSS og kan stadig få en god telefon til at hakke. Her er koden, hvad det koster at tegne, og de reserver, der holder ord læselige, når sløringen aldrig dukker op.

CSS og web

CSS text-shadow: syntaks, eksempler og bedre løsninger

5 min. læsning

text-shadow er en lille egenskab med et stort ry for at redde ulæselige overskrifter. Den er bedre til pynt end til redning. Her er syntaksen, en håndfuld stilarter, der er værd at kopiere, og hvad du skal bruge, når læsbarhed er det egentlige problem.

CSS og web

Design tokens: én kilde til sandhed for farve og skrift

5 min. læsning

En brandfarve, der bor i fyrre filer, vil glide fra hinanden. Et token bor ét sted, og hver platform læser fra det. Her er, hvordan du strukturerer design tokens, navngiver dem, så de holder, og sender dem videre til kode og designværktøjer.

Find det look, der kun er dit.

Hver Mark er en levende baggrund med én ejer. Prøv en ledig Mark, og sikr dig din, når det føles rigtigt.

Begynd at designe

Tjek et certifikat

Skriv et certifikatnummer eller en Marks kode for at se, hvem der ejer den.

Virker med ChatGPT og Claude

Bed din AI om et design. Den laver det i din Mark, klar til at redigere.

ChatGPTClaude
Sådan forbinder du

Produkt

  • Markedet
  • Udforsk
  • Priser
  • Certifikater

Lær

  • Designguiden
  • Hjælpecenter
  • Nyheder

Udviklere

  • Oversigt
  • ChatGPT og Claude
  • API-reference
  • API-nøgler

Virksomhed

  • Om os
  • Kontakt os
  • Log ind

Juridisk

  • Vilkår
  • Privatliv
  • Refusion
  • Mark-beskyttelse
  • Cookies
  • Alle politikker
Bevæg dig hen over bogstaverne. Hvert af dem bærer en ægte Mark.Rør ved et bogstav for at se dets Mark.Ét navn. Ti Marks inden i.
© 2026 Gradiently