Erstelle einfache und mehrfache CSS-Schatten visuell mit Live-Vorschau.
{{ cssOutput }}
Die CSS-Eigenschaft box-shadow fügt einem Element einen oder mehrere Schatten hinzu. Schatten erzeugen Tiefe und lassen Elemente wie Karten, Buttons und Dialoge vom Hintergrund abheben. Du kannst Offset, Blur-Radius, Spread-Radius, Farbe und den Inset-Modus steuern.
Die Syntax lautet: box-shadow: [inset] offset-x offset-y blur-radius spread-radius color;. Offset-X und Offset-Y bestimmen die Position des Schattens. Blur-Radius steuert die Weichzeichnung, Spread-Radius vergrößert oder verkleinert den Schatten. Das Schlüsselwort inset erzeugt einen inneren Schatten. Mehrere Schatten werden kommagetrennt angegeben.
Die box-shadow-Property ist im CSS Backgrounds and Borders Module Level 3 spezifiziert. Die volle Syntax lautet box-shadow: [inset?] <offset-x> <offset-y> [<blur-radius>] [<spread-radius>] <color>. Offset-X verschiebt den Schatten horizontal (positiv = rechts), Offset-Y vertikal (positiv = unten). Der Blur-Radius ist die Standardabweichung der Gauß-Unschärfe; je größer, desto weicher und weiter verschwommen wird der Schatten. Der Spread-Radius vergrößert (positiv) oder verkleinert (negativ) den ganzen Schatten gleichmäßig — anders als Blur bleibt die Kante hart.
Das Keyword inset dreht den Schatten um — er erscheint im Inneren der Box, als wäre die Fläche eingedrückt. Insets eignen sich für Eingabefelder, gedrückte Buttons oder eingelassene Karten. Mehrere Schatten lassen sich kommagetrennt stapeln: box-shadow: 0 1px 2px #0001, 0 4px 8px #0001, 0 16px 32px #0001;. Der Browser malt sie von hinten nach vorne (letzter Wert unten, erster oben) — wer eine glaubwürdige Höhenwirkung will, schichtet drei bis vier Schatten mit unterschiedlichen Blur-Werten.
box-shadow respektiert border-radius automatisch — eine gerundete Box wirft einen passend gerundeten Schatten. Wichtig: der Schatten erweitert nicht die Klick-Fläche und nimmt keinen Layout-Platz ein, das macht ihn vorhersehbar in Grid- und Flex-Containern. Im Vergleich zu filter: drop-shadow() ist box-shadow rechteckig (folgt der Box-Kontur), während drop-shadow Alpha-basiert ist und auch transparente PNGs sauber umschattet — dafür aber GPU-intensiver. Bei einfachen UI-Karten ist box-shadow fast immer die richtige Wahl.
Mit ein paar Schritten bekommst du Schatten, die deine Hierarchie unterstützen statt sie zu zerstören.
#00000033 = 20 %). Reines Schwarz wirkt schwer, Markenfarbe + niedriges Alpha (z. B. #0d948833) wirkt eleganter.var(--shadow-elevation-2), damit dein Designsystem die Tiefen-Skala zentral verwaltet.Diese Snippets sind erprobt und decken die wichtigsten Elevation-Stufen ab.
box-shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04); — Tailwind-Standard shadow-sm.box-shadow: 0 2px 4px -1px #0003, 0 4px 6px #00000024, 0 1px 10px #0000001f;.box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25); — passt für schwebende Dialoge in modernen UIs.box-shadow: inset 0 2px 4px rgba(0,0,0,0.06); — leichter Eindrück-Effekt, gut für Search-Bars.box-shadow: 0 10px 25px -5px rgba(13,148,136,0.25); kombiniert mit transform: translateY(-2px); für interaktives Feedback.box-shadow mit Blur ist GPU-beschleunigt, aber nicht kostenlos: Jeder Blur-Pixel muss als Gauß-Faltung über einen Bereich von ungefähr 2 * blur Pixeln berechnet werden. Bei Blur 64 px auf einem 1920x1080-Display sind das mehrere Hundert MB Speicher-Bandbreite pro Frame. Auf älteren Mobilgeräten und in iOS Safari führt das zu Frame-Drops, besonders wenn der Schatten animiert wird. Tipps: Vermeide animierte box-shadow auf langsamen Geräten — animiere stattdessen transform und opacity, die auf der Compositor-Ebene laufen. Wenn ein Schatten statisch ist, ist die Kostenstelle gering. Auf Hintergründen mit Transparenz oder Wallpaper kann ein dunkler Schatten unsichtbar werden — testen mit Dark Mode und unterschiedlichen Surface-Tönen. Schließlich: Schatten ist rein dekorativ; WCAG schreibt sie nicht vor, aber sie müssen die Lesbarkeit von Text auf der Karte nicht beeinträchtigen — Spread-Werte über 10 px in Markenfarbe können Kontraste am Kartenrand reduzieren.
position: fixed-Containern manchmal nicht korrekt. Reduziere Blur auf unter 50 px oder nutze ein Container-Element ohne fixed positioning für den Schatten.::after mit fertigem Schatten an und animiere dessen opacity. So bleibt die teure Gauß-Faltung statisch und nur die GPU-günstige Opacity ändert sich.rgba(15, 23, 42, 0.15) statt rgba(0,0,0,0.15).box-shadow: 0 0 20px rgba(255,255,255,0.05)), um Tiefe zu signalisieren.