So funktioniert box-shadow
box-shadow malt einen Schatten um die Border-Box eines Elements. Er folgt border-radius, nimmt im Layout keinen Platz ein und braucht mindestens zwei Werte: wie weit er horizontal und vertikal verschoben wird.
Die Syntax
box-shadow: [inset] <offset-x> <offset-y> [<blur>] [<spread>] [<color>];
| Wert | Bedeutung | Standard |
|---|---|---|
inset | Zeichnet den Schatten innerhalb der Box, wie eine eingedrückte Fläche | Außen |
| offset-x | Positiv schiebt nach rechts, negativ nach links | Pflicht |
| offset-y | Positiv schiebt nach unten, negativ nach oben | Pflicht |
| blur | Wie weich die Kante ist; darf nicht negativ sein | 0 (harte Kante) |
| spread | Vergrößert (positiv) oder verkleinert (negativ) den Schatten | 0 |
| color | Jede Farbe; ein halbtransparentes Schwarz sieht meist am besten aus | Die Textfarbe |
Die Anzahl der Längen bestimmt ihre Bedeutung: Zwei sind die Versätze, drei ergänzen die Unschärfe, vier den Spread. Probier es aus:
Probier 0 0 0 4px #f59e0b (ein Ring), inset 0 0 12px #2563eb und -8px -8px 0 #16a34a.
Spread: Ringe und einseitige Schatten
Spread ändert die Größe des Schattens vor dem Weichzeichnen. Daraus entstehen zwei Muster:
- Ein Ring: kein Versatz, keine Unschärfe, nur Spread. Anders als ein Rahmen ändert er die Größe des Elements nicht und ist deshalb ein guter Fokusindikator (
:focus-visible { box-shadow: 0 0 0 3px #2563eb; }). - Ein Ring mit Lücke: Leg einen weißen Spread unter einen farbigen, größeren.
- Nur eine Seite: Verschieb den Schatten nach unten und verkleinere ihn mit negativem Spread, sodass er nur unten hervorschaut.
Mehrere Schatten für realistische Tiefe
Echte Schatten haben nahe am Objekt einen dunklen, scharfen Teil und weiter weg einen weichen, blassen. Zwei oder drei Ebenen ahmen das viel besser nach als eine große Unschärfe:
Der erste Schatten in der Liste wird obenauf gemalt. Nimm als Schattenfarbe halbtransparentes Schwarz oder einen dunklen Ton des Hintergrunds, nie reines Grau, damit sie abdunkeln, was darunter liegt.
Inset-Schatten
inset zeichnet den Schatten innerhalb der Padding-Box, als wäre die Fläche eingedrückt. Das passt zu Texteingabefeldern, Vertiefungen und gedrückten Buttons:
input {
box-shadow: inset 0 1px 3px rgb(0 0 0 / 20%);
}
button:active {
box-shadow: inset 0 3px 6px rgb(0 0 0 / 30%);
}
Ein Inset-Schatten wird über dem Hintergrund, aber unter dem Inhalt gezeichnet. Schatten, die den Buchstabenformen statt der Box folgen, sind text-shadow.
Häufige Fehler
- Reinschwarze, völlig deckende Schatten. Sie sehen aus wie eine dunkle Umrandung. Nimm 10% bis 30% Alpha.
- Eine riesige Unschärfe für Tiefe. Kombiniere einen kleinen scharfen Schatten mit einem großen weichen.
- Ein Schatten, der am Rand abgeschnitten wird. Ein Vorfahr mit
overflow: hiddenschneidet ihn ab; gib dem Vorfahren Padding oder verlege die overflow-Regel. - Negative Unschärfe. Sie ist ungültig, und die ganze Deklaration wird ignoriert.
box-shadowan vielen Elementen animieren. Das wird in jedem Frame neu gemalt. Auf aufwendigen Seiten animierst du stattdessen dieopacityeines Pseudoelements, das den größeren Schatten trägt.
Häufig gestellte Fragen
Wie lautet die Syntax von box-shadow?
box-shadow: offset-x offset-y blur spread color;, zum Beispiel box-shadow: 0 4px 12px 0 rgb(0 0 0 / 15%);. Nur die beiden Versätze sind Pflicht; mit inset wird der Schatten innerhalb der Box gezeichnet.
Was macht spread in box-shadow?
Es vergrößert (positiv) oder verkleinert (negativ) den Schatten, bevor er weichgezeichnet wird. Ein Schatten ohne Versatz, ohne Unschärfe und mit einem Spread von 3px ist ein einfarbiger 3px-Ring um das Element.
Wie setze ich einen Schatten nur unten?
Verschieb ihn nach unten und zieh ihn mit einem negativen Spread ein, sodass die Seiten verschwinden: box-shadow: 0 8px 6px -6px rgb(0 0 0 / 40%);.
Beeinflusst box-shadow das Layout?
Nein. Ein Schatten nimmt keinen Platz ein und verschiebt keine anderen Elemente. Deshalb eignet er sich gut für einen Fokusring oder einen Hover-Effekt ohne Layoutverschiebung. Ein Vorfahr mit overflow: hidden kann ihn abschneiden.
Kann ich mehrere box-shadows verwenden?
Ja, trenne sie durch Kommas. Der erste Schatten wird obenauf gezeichnet. Ein kleiner scharfer Schatten zusammen mit einem großen weichen wirkt natürlicher als ein einziger großer Schatten.