Markt
Preise
AnmeldenLoslegen
LeitfadenCSS und Web
CSS und Web

CSS box-shadow: weiche, geschichtete Schatten, die echt wirken

Ein einzelner grauer box-shadow ist der schnellste Weg, ein Interface wie eine Vorlage aussehen zu lassen. Echte Schatten sind mehrere Schatten zugleich, getönt und leiser, als du denkst.

GradientlyVerifiziertes Gradiently-Konto·1. Oktober 2026·5 Min. Lesezeit
Cover: Tape Cliff · GR·CY1K·VC

Die Kurzfassung

  • Die CSS-Eigenschaft box-shadow nimmt ein optionales Schlüsselwort inset, zwei Versätze, einen Unschärferadius, einen Ausbreitungsradius und eine Farbe.
  • Ein einzelner box-shadow wirkt künstlich, weil echte Objekte zugleich einen scharfen Kontaktschatten und einen breiten weichen Schatten werfen.
  • Drei bis fünf Schatten zu schichten, jeder mit etwa doppeltem Versatz und doppelter Unschärfe des vorherigen und geringer Deckkraft, ergibt einen weichen, glaubwürdigen Schatten.
  • Einen Schatten zum Farbton des Hintergrunds hin zu tönen wirkt auf farbigen oder warmen Flächen natürlicher als reines Schwarz.
  • Eine Animation von box-shadow zeichnet in jedem Frame neu, blende stattdessen die Deckkraft eines Pseudo-Elements mit dem größeren Schatten ein.
Auf dieser Seite
Syntax von box-shadowWarum ein einzelner Schatten künstlich wirktSo schichtest du box-shadowsEine Höhenskala für ein InterfaceSchatten auf farbigen und dunklen Hintergründenbox-shadow ruckelfrei animierenWann du den Schatten weglässt

Ein CSS box-shadow wird als box-shadow: 0 4px 12px rgb(0 0 0 / 0.15) geschrieben: ein horizontaler Versatz, ein vertikaler Versatz, ein Unschärferadius, eine optionale Ausbreitung und eine Farbe. Dieser einzelne Schatten reicht für einen schnellen Prototyp, wirkt aber selten echt. Die Schatten, die das Auge überzeugen, sind geschichtet: mehrere Schatten an einem Element, jeder größer und blasser als der vorige, passend zur Fläche darunter getönt.

Syntax von 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); }
Der Schatten folgt immer border-radius, deshalb ergibt ein Schatten nur mit Ausbreitung eine saubere abgerundete Haarlinie, ohne das Layout zu ändern.
insetAus

Wirkung

Zeichnet den Schatten innerhalb des Rahmens statt außerhalb
Versatz x und y

Standard

Pflicht

Wirkung

Verschiebt den Schatten. Licht von oben heißt ein positives y
Unschärfe

Standard

0

Wirkung

Macht die Kante weich. Größere Werte ziehen den Verlauf breiter
Ausbreitung

Standard

0

Wirkung

Vergrößert oder verkleinert den Schatten vor der Unschärfe. Negativ zieht ihn ein
Farbecurrentcolor

Wirkung

Nutze eine Farbe mit Alpha; deckende Schatten wirken wie Aufkleber
WertStandardWirkung
insetAusZeichnet den Schatten innerhalb des Rahmens statt außerhalb
Versatz x und yPflichtVerschiebt den Schatten. Licht von oben heißt ein positives y
Unschärfe0Macht die Kante weich. Größere Werte ziehen den Verlauf breiter
Ausbreitung0Vergrößert oder verkleinert den Schatten vor der Unschärfe. Negativ zieht ihn ein
FarbecurrentcolorNutze eine Farbe mit Alpha; deckende Schatten wirken wie Aufkleber
Die Ausbreitung lassen die meisten weg, dabei behebt sie am meisten. Eine kleine negative Ausbreitung verhindert, dass eine große Unschärfe an den Seiten herausläuft.

Warum ein einzelner Schatten künstlich wirkt

Leg ein Buch auf einen Tisch und sieh dir seinen Schatten an. Direkt an der Kante, wo es aufliegt, ist der Schatten dunkel und scharf. Weiter draußen wird er breit und blass, weil Licht das Objekt aus vielen Richtungen umfließt. Ein box-shadow kann immer nur eines davon sein: eng und hart oder breit und verschwommen. So oder so merkt das Auge, dass etwas fehlt.

Einzelner Schatten

  • Eine mittlere Unschärfe in 25 Prozent Schwarz
  • Grauer Hof rund um die Karte
  • Schwer zu sagen, wie hoch die Karte schwebt
  • Wirkt auf farbigen Hintergründen schmutzig

Geschichteter Schatten

  • Vier Schatten, jeder blasser und breiter
  • Dicht an der Kante, luftig weiter weg
  • Die Höhe ist auf einen Blick lesbar
  • Getönt, damit er natürlich auf seiner Fläche sitzt

So schichtest du box-shadows

Die Methode ist einfach: Fang klein und scharf an und verdopple dann Versatz und Unschärfe für jede weitere Ebene, wobei jede Ebene blass bleibt. Wo sich die Ebenen überlagern, addieren sich die Deckkräfte, daher können einzelne Werte überraschend niedrig sein.

  1. 1

    Beginne mit einem Kontaktschatten

    0 1px 1px mit etwa 8 Prozent Deckkraft. Das ist die dunkle Linie direkt unter der Kante.

  2. 2

    Verdopple für jede Ebene

    Dann 0 2px 2px, 0 4px 4px, 0 8px 8px. Versatz und Unschärfe wachsen gemeinsam, so scheint das Licht von oben zu kommen.

  3. 3

    Halte jede Ebene blass

    Jeweils zwischen 5 und 10 Prozent. Wirkt das Ergebnis schwer, entferne die größte Ebene, bevor du irgendetwas dunkler machst.

  4. 4

    Töne die Farbe

    Ersetze Schwarz durch eine tiefe Version des Hintergrundtons, etwa Marineblau auf blauen Seiten oder Braun auf 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); }
Eine dreistufige Höhenskala als Custom Properties. Ändere --shadow-color einmal, und jeder Schatten im System folgt.

Schatten als Variablen zu speichern macht sie zu Design Tokens, was jede Karte, jedes Menü und jeden Dialog konsistent hält. CSS-Variablen fürs Theming und Design Tokens zeigen, wie du sie in ein ganzes Theme einbindest.

Eine Höhenskala für ein Interface

Schatten signalisiert Höhe, also sollte er überall dasselbe bedeuten. Wähle drei oder vier Stufen und weise sie Aufgaben zu. Alles, was höher schwebt, bekommt einen größeren, weicheren Schatten, niemals nur einen dunkleren.

0keiner oder eine 1px-Haarlinie per Ausbreitung

Nutze sie für

Eingabefelder, Tabellenzeilen, flache Karten auf getönter Seite
1--shadow-sm

Nutze sie für

Ruhende Karten, Buttons, die klickbar wirken sollen
2--shadow-md

Nutze sie für

Karten im Hover, Dropdown-Menüs, Popover
3--shadow-lg

Nutze sie für

Dialoge, Sheets, alles über einer abgedunkelten Seite
StufeTokenNutze sie für
0keiner oder eine 1px-Haarlinie per AusbreitungEingabefelder, Tabellenzeilen, flache Karten auf getönter Seite
1--shadow-smRuhende Karten, Buttons, die klickbar wirken sollen
2--shadow-mdKarten im Hover, Dropdown-Menüs, Popover
3--shadow-lgDialoge, Sheets, alles über einer abgedunkelten Seite
Vier Stufen decken fast jedes Interface ab. Mehr, und niemand kann sie noch auseinanderhalten.

Schatten auf farbigen und dunklen Hintergründen

Reinschwarze Schatten werden auf einer farbigen Fläche grau und trüb, so wie Schwarz in Farbe gemischt sie stumpf macht. Nimm die Schattenfarbe stattdessen aus dem Hintergrund: ein tiefer Petrolschatten auf einer Mintseite, ein dunkles Pflaume auf einer fliederfarbenen. Auf Verlaufshintergründen nimm den dunkelsten Farbstopp des Verlaufs und nutze ihn mit geringer Deckkraft.

Drei Seitenfarben, jede mit der passenden Schattenfarbe. Nutze die Schattentöne mit 5 bis 10 Prozent pro Ebene.

Im Dark Mode verschwinden Schatten fast, weil kaum Licht da ist, das sie blockieren könnten. Zeig Höhe stattdessen, indem du erhöhte Flächen etwas heller machst, und behalte eine feine Haarlinie an der Kante. Dark-Mode-Design geht die Flächenfarben durch. Für Panels über Bildern trennt ein backdrop-filter Ebenen oft besser als ein schwererer Schatten.

box-shadow ruckelfrei animieren

Ändert sich box-shadow beim Hover, muss der Browser den Schatten in jedem Frame des Übergangs neu zeichnen. Bei einem Button ist das kein Problem. Bei einem Raster aus fünfzig Karten ruckelt es. Die übliche Lösung: Leg den größeren Schatten auf ein Pseudo-Element und blende seine Deckkraft ein, was der Browser günstig compositen kann.

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; }
}
Beide Schatten werden einmal gezeichnet. Der Hover ändert nur die Deckkraft, daher wird während des Übergangs nichts neu gezeichnet.

Mehr dazu, was Zeichenzeit kostet, steht in Performance von CSS-Verläufen, und derselbe Schichtansatz passt zu Buttons in Verlaufsbuttons in CSS.

Wann du den Schatten weglässt

Schatten trennen eine Fläche von dem, was dahinter liegt. Ist der Hintergrund ein satter Verlauf oder ein Foto, kämpft ein starker Schatten gegen ihn. Oft tut ein ruhigerer Hintergrund mehr für die Karte als jeder Schatten. Gradiently Marks sind dafür gebaut: Jeder ist ein lebendiger Hintergrund mit eigenen Farben, eigenem Licht und eigener Körnung, und die Worte darauf bleiben lesbar, weil der Mark sich hinter ihnen beruhigt, ohne dass Kästen oder Schatten die Arbeit machen.

Finde einen Farbverlauf, der nur dir gehört

Stöbere durch Tausende Marks, gestalte kostenlos mit jedem davon und sichere dir den, der sich nach dir anfühlt.

Den Markt durchstöbern

Häufige Fragen

Welche Werte hat CSS box-shadow?

Ein optionales inset, einen horizontalen Versatz, einen vertikalen Versatz, einen Unschärferadius, einen Ausbreitungsradius und eine Farbe, zum Beispiel 0 4px 12px 0 rgb(0 0 0 / 0.15).

Wie mache ich in CSS einen weichen box-shadow?

Schichte drei bis fünf Schatten, verdopple jedes Mal Versatz und Unschärfe, mit jeweils 5 bis 10 Prozent Deckkraft. Töne sie zur Hintergrundfarbe hin.

Wie füge ich mehr als einen box-shadow hinzu?

Trenne sie in einer box-shadow-Deklaration mit Kommas. Der zuerst genannte Schatten wird oben gezeichnet.

Was bewirkt spread bei box-shadow?

Es vergrößert oder verkleinert den Schatten, bevor er unscharf wird. Ein negativer Wert verhindert, dass eine große Unschärfe an den Seiten der Box sichtbar wird.

Ist das Animieren von box-shadow schlecht für die Performance?

Es zeichnet in jedem Frame neu. Leg den Hover-Schatten auf ein Pseudo-Element und animiere stattdessen dessen Deckkraft.

Diesen Artikel teilen

Geschrieben von GradientlyVerifiziertes Gradiently-Konto

Das Team hinter Gradiently, einem Designtool rund um Marks: lebendige Farbverläufe, durch die alles, was du gestaltest, nach dir aussieht.

Unser Profil ansehen

Auf dieser Seite

Syntax von box-shadowWarum ein einzelner Schatten künstlich wirktSo schichtest du box-shadowsEine Höhenskala für ein InterfaceSchatten auf farbigen und dunklen Hintergründenbox-shadow ruckelfrei animierenWann du den Schatten weglässt

Diesen Artikel teilen

Als Nächstes in CSS und Web

color-mix() in CSS: Farben im Browser mischen

Weiterlesen

Alle Artikel zu CSS und Web
CSS und Web

backdrop-filter in CSS: Milchglas, das schnell bleibt

5 Min. Lesezeit

Milchglas braucht drei Zeilen CSS und kann trotzdem ein gutes Smartphone ins Stocken bringen. Hier ist der Code, was das Zeichnen kostet, und die Fallbacks, die Worte lesbar halten, wenn die Unschärfe nie ankommt.

CSS und Web

CSS text-shadow: Syntax, Beispiele und bessere Alternativen

5 Min. Lesezeit

text-shadow ist eine kleine Eigenschaft mit dem Ruf, unlesbare Überschriften zu retten. Für Dekoration taugt sie besser als zur Rettung. Hier sind Syntax, einige Stile zum Kopieren und was hilft, wenn Lesbarkeit das echte Problem ist.

CSS und Web

Design-Tokens: eine Quelle der Wahrheit für Farbe und Schrift

5 Min. Lesezeit

Eine Markenfarbe, die in vierzig Dateien steht, driftet auseinander. Ein Token lebt an einem Ort, und jede Plattform liest von dort. So strukturierst du Design-Tokens, benennst sie dauerhaft und bringst sie in Code und Designtools.

Finde den Look, der nur dir gehört.

Jeder Mark ist ein lebendiger Hintergrund mit einem Besitzer. Probiere einen noch freien Mark und sichere dir deinen, wenn es sich richtig anfühlt.

Jetzt gestalten

Zertifikat prüfen

Gib eine Zertifikatsnummer oder den Code eines Marks ein, um zu sehen, wem er gehört.

Funktioniert mit ChatGPT und Claude

Bitte deine KI um ein Design. Sie macht es in deinem Mark, bereit zum Bearbeiten.

ChatGPTClaude
So verbindest du sie

Produkt

  • Markt
  • Erkunden
  • Preise
  • Zertifikate

Lernen

  • Leitfaden
  • Hilfe-Center
  • Neuigkeiten

Entwickler

  • Überblick
  • ChatGPT und Claude
  • API-Referenz
  • API-Schlüssel

Unternehmen

  • Über uns
  • Kontakt
  • Anmelden

Rechtliches

  • Nutzungsbedingungen
  • Datenschutz
  • Erstattungen
  • Mark-Schutz
  • Cookies
  • Alle Richtlinien
Fahr über die Buchstaben. Jeder trägt einen echten Mark.Tippe auf einen Buchstaben, um seinen Mark zu sehen.Ein Name. Zehn Marks darin.
© 2026 Gradiently