Marked
Priser
Logg innStart
DesignguidenCSS og nett
CSS og nett

CSS-boksskygge: myke skygger i lag som virker ekte

Én grå box-shadow er den raskeste veien til et grensesnitt som ligner en mal. Ekte skygger består av flere skygger samtidig, med fargetone og mindre styrke enn du tror.

GradientlyVerifisert Gradiently-konto·1. oktober 2026·5 min lesetid
Omslag: Tape Cliff · GR·CY1K·VC

Kortversjonen

  • CSS-egenskapen box-shadow tar et valgfritt inset-nøkkelord, to forskyvninger, en uskarphetsradius, en utvidelsesradius og en farge.
  • Én boksskygge virker kunstig fordi ekte gjenstander kaster både en skarp kontaktskygge og en bred, myk skygge samtidig.
  • Tre til fem skygger i lag, hver med omtrent dobbel forskyvning og uskarphet og lav opasitet, gir en myk, troverdig skygge.
  • Å tone skyggen mot bakgrunnens fargetone virker mer naturlig enn rent svart på fargede eller varme flater.
  • Animasjon av box-shadow tegner på nytt i hver bilderamme. Ton heller opasiteten til et pseudoelement som bærer den større skyggen.
På denne siden
Syntaks for box-shadowHvorfor én skygge virker kunstigSlik legger du boksskygger i lagEn høydeskala for et grensesnittSkygger på fargede og mørke bakgrunnerAnimer box-shadow uten hakkingNår du bør droppe skyggen

En CSS-boksskygge skrives box-shadow: 0 4px 12px rgb(0 0 0 / 0.15): vannrett forskyvning, loddrett forskyvning, uskarphetsradius, valgfri utvidelse og farge. Én slik skygge fungerer til en rask prototype, men ser sjelden ekte ut. Skygger som overbeviser øyet, er lagdelte: flere på ett element, hver større og svakere enn den forrige, tonet for flaten under.

Syntaks for box-shadow

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 alltid border-radius. Derfor gir en skygge med bare utvidelse en pen, avrundet hårtynn kant uten å endre layouten.
insetAv

Effekt

Tegner skyggen innenfor kanten fremfor utenfor
Forskyvning x og y

Standard

Påkrevd

Effekt

Flytter skyggen. Lys ovenfra betyr positiv y
Uskarphet

Standard

0

Effekt

Mykner kanten. Større verdier sprer uttoningen bredere
Utvidelse

Standard

0

Effekt

Forstørrer eller krymper skyggen før uskarphet. Negativ verdi trekker den inn
Fargecurrentcolor

Effekt

Bruk en alfafarge. Ugjennomsiktige skygger ligner klistremerker
VerdiStandardEffekt
insetAvTegner skyggen innenfor kanten fremfor utenfor
Forskyvning x og yPåkrevdFlytter skyggen. Lys ovenfra betyr positiv y
Uskarphet0Mykner kanten. Større verdier sprer uttoningen bredere
Utvidelse0Forstørrer eller krymper skyggen før uskarphet. Negativ verdi trekker den inn
FargecurrentcolorBruk en alfafarge. Ugjennomsiktige skygger ligner klistremerker
Utvidelse er verdien flest hopper over, og den som løser mest. En liten negativ utvidelse hindrer stor uskarphet i å lekke ut til sidene.

Hvorfor én skygge virker kunstig

Legg en bok på et bord og se på skyggen. Rett ved kanten der den berører bordet, er skyggen mørk og skarp. Lenger ute blir den bred og svak, fordi lys kommer rundt gjenstanden fra mange retninger. Én box-shadow kan bare være én av delene: tett og hard, eller bred og uskarp. Uansett merker øyet at noe mangler.

Én skygge

  • Én middels uskarphet i 25 prosent svart
  • Grå ring rundt hele kortet
  • Vanskelig å se hvor høyt kortet svever
  • Ser skitten ut på fargede bakgrunner

Skygge i lag

  • Fire skygger, hver svakere og bredere
  • Tett ved kanten, luftig lenger ute
  • Høyden forstås i et blikk
  • Tonet for å ligge naturlig på flaten

Slik legger du boksskygger i lag

Metoden er enkel: start lite og skarpt, og doble forskyvning og uskarphet for hvert ekstra lag. Hold alle lag svake. Opasiteten summeres der lagene overlapper, så enkeltverdiene kan være overraskende lave.

  1. 1

    Start med en kontaktskygge

    0 1px 1px med rundt 8 prosent opasitet. Dette er den mørke linjen rett under kanten.

  2. 2

    Doble for hvert lag

    Deretter 0 2px 2px, 0 4px 4px, 0 8px 8px. Forskyvning og uskarphet vokser sammen, så lyset virker å komme ovenfra.

  3. 3

    Hold hvert lag svakt

    Mellom 5 og 10 prosent hver. Hvis resultatet virker tungt, fjern det største laget før du gjør noe mørkere.

  4. 4

    Ton fargen

    Erstatt svart med en dyp versjon av bakgrunnens fargetone, som marineblått på blå sider eller brunt på krem.

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øydeskala med tre trinn som egendefinerte egenskaper. Endre --shadow-color én gang, så følger alle skygger i systemet.

Lagrer du skygger som variabler, blir de designtokens som holder kort, menyer og dialoger konsekvente. CSS-variabler til temaer og designtokens viser hvordan du kobler dem til et helt tema.

En høydeskala for et grensesnitt

Skygge signaliserer høyde og bør bety det samme overalt. Velg tre eller fire nivåer og gi dem oppgaver. Alt som svever høyere, får en større, mykere skygge, aldri bare en mørkere.

0Ingen, eller en hårtynn kant med 1px utvidelse

Brukes til

Inndatafelt, tabellrader, flate kort på en tonet side
1--shadow-sm

Brukes til

Kort i hvile, knapper som skal føles trykkbare
2--shadow-md

Brukes til

Kort under pekeren, nedtrekksmenyer, hurtigpaneler
3--shadow-lg

Brukes til

Dialoger, paneler, alt over en dempet side
NivåTokenBrukes til
0Ingen, eller en hårtynn kant med 1px utvidelseInndatafelt, tabellrader, flate kort på en tonet side
1--shadow-smKort i hvile, knapper som skal føles trykkbare
2--shadow-mdKort under pekeren, nedtrekksmenyer, hurtigpaneler
3--shadow-lgDialoger, paneler, alt over en dempet side
Fire nivåer dekker nesten alle grensesnitt. Flere enn det blir vanskelige å skille fra hverandre.

Skygger på fargede og mørke bakgrunner

Helt svarte skygger blir grå og grumsete på en farget flate, slik svart blandet i maling demper den. Hent heller skyggefargen fra bakgrunnen: dyp blågrønn på en mintside, mørk plomme på en syrinfarget. På gradientbakgrunner velger du det mørkeste stoppet og bruker det med lav opasitet.

Tre sidefarger, hver med skyggefargen som passer. Bruk skyggetonene med 5 til 10 prosent per lag.

I mørk modus forsvinner skygger nesten, fordi det er lite lys å blokkere. Vis høyde ved å gjøre hevede flater litt lysere, og behold en svak hårtynn kant. Design for mørk modus går gjennom flatefargene. For paneler over bilder skiller et backdrop-filter ofte lagene bedre enn en tyngre skygge.

Animer box-shadow uten hakking

Å endre box-shadow når pekeren holdes over, tvinger nettleseren til å tegne skyggen på nytt i hver bilderamme av overgangen. På én knapp går det fint. På et rutenett med femti kort hakker det. Standardløsningen er å legge den større skyggen på et pseudoelement og tone opasiteten, som nettleseren kan sette sammen med liten kostnad.

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 tegnes én gang. Pekerberøring endrer bare opasiteten, så ingenting tegnes på nytt under overgangen.

Mer om hva som koster tegnetid, står i ytelse for CSS-gradienter. Samme lagdeling passer knapper i gradientknapper i CSS.

Når du bør droppe skyggen

Skygger skiller en flate fra det som ligger bak. Hvis bakgrunnen er en fyldig gradient eller et fotografi, konkurrerer en sterk skygge med den. Ofte gjør en roligere bakgrunn mer for kortet enn noen skygge kan. Marks fra Gradiently er bygget for dette: hver er en levende bakgrunn med egne farger, lys og korn. Ordene over forblir lesbare fordi Marken roer seg bak dem, uten bokser eller skygger som gjør jobben.

Finn en gradient som bare er din

Bla gjennom tusenvis av Marks, design gratis med hvilken som helst av dem, og sikre deg den som føles som deg.

Bla i Markedet

Spørsmål folk stiller

Hva er verdiene i CSS box-shadow?

Valgfri inset, vannrett forskyvning, loddrett forskyvning, uskarphetsradius, utvidelsesradius og farge, for eksempel 0 4px 12px 0 rgb(0 0 0 / 0.15).

Hvordan lager jeg en myk boksskygge i CSS?

Legg tre til fem skygger i lag, doble forskyvningen og uskarpheten hver gang, med 5 til 10 prosent opasitet per lag. Ton dem mot bakgrunnsfargen.

Hvordan legger jeg til mer enn én boksskygge?

Skill dem med komma i én box-shadow-deklarasjon. Den første skyggen i listen tegnes øverst.

Hva gjør utvidelse i box-shadow?

Den forstørrer eller krymper skyggen før den gjøres uskarp. Negativ utvidelse hindrer stor uskarphet i å synes langs sidene av boksen.

Er animasjon av box-shadow dårlig for ytelsen?

Den tegner på nytt i hver bilderamme. Legg skyggen ved pekerberøring på et pseudoelement og animer opasiteten i stedet.

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

På denne siden

Syntaks for box-shadowHvorfor én skygge virker kunstigSlik legger du boksskygger i lagEn høydeskala for et grensesnittSkygger på fargede og mørke bakgrunnerAnimer box-shadow uten hakkingNår du bør droppe skyggen

Del denne guiden

Neste i CSS og nett

color-mix() i CSS: bland farger i nettleseren

Les videre

Alle guider om CSS og nett
CSS og nett

Backdrop-filter i CSS: frostet glass som holder seg raskt

5 min lesetid

Frostet glass tar tre linjer CSS og kan likevel få en god telefon til å hakke. Her er koden, kostnaden ved å tegne den og reservene som holder ordene lesbare når uskarpheten uteblir.

CSS og nett

Tekstskygge i CSS: syntaks, eksempler og bedre alternativer

5 min lesetid

text-shadow er en liten egenskap med stort ry for å redde uleselige overskrifter. Den er bedre til pynt enn til redning. Her er syntaksen, en håndfull stiler verdt å kopiere, og hva du bør bruke når lesbarhet er det egentlige problemet.

CSS og nett

Designtokens: én kilde til farger og typografi

4 min lesetid

En merkevarefarge som finnes i førti filer, vil sprike. Et token finnes på ett sted som alle plattformer leser fra. Slik strukturerer du designtokens, gir dem varige navn og bruker dem i kode og designverktøy.

Finn uttrykket som bare er ditt.

Hver Mark er en levende bakgrunn med én eier. Prøv en ledig Mark og sikre deg din når det føles riktig.

Begynn å designe

Sjekk et sertifikat

Skriv inn et sertifikatnummer eller en Mark-kode for å se hvem som eier den.

Virker med ChatGPT og Claude

Be AI-en din om et design. Den lager det i din Mark, klart til å redigere.

ChatGPTClaude
Slik kobler du til

Produkt

  • Marked
  • Utforsk
  • Priser
  • Sertifikater

Lær

  • Designguiden
  • Hjelpesenter
  • Hva er nytt

Utviklere

  • Oversikt
  • ChatGPT og Claude
  • API-referanse
  • API-nøkler

Selskap

  • Om oss
  • Kontakt oss
  • Logg inn

Juridisk

  • Vilkår
  • Personvern
  • Refusjoner
  • Mark-beskyttelse
  • Informasjonskapsler
  • Alle retningslinjer
Beveg deg over bokstavene. Hver av dem bærer en ekte Mark.Trykk på en bokstav for å se Marken.Ett navn. Ti Marks inni det.
© 2026 Gradiently