So fügst du ein Hintergrundbild hinzu
background-image malt ein Bild hinter Inhalt, Padding und Rahmen des Elements. Standardmäßig beginnt es in der oberen linken Ecke der Padding-Box, behält seine natürliche Größe und wiederholt sich, um die Box zu füllen:
In einem echten Projekt zeigt url() auf eine Datei: url("images/hero.jpg"). Der Pfad ist relativ zu dem Stylesheet, in dem er steht (oder zur Seite, bei einem <style>-Element). Die Beispiele auf dieser Seite nutzen kleine SVG-Bilder, die inline als data:-URLs geschrieben sind, damit sie überall laufen.
Zwei Dinge solltest du von Anfang an wissen:
- Ein Hintergrund gibt einem Element keine Größe. Ein leeres
divmit Hintergrundbild ist 0px hoch. Gib ihm Inhalt, Padding, eineheightoder einaspect-ratio. - Ein Hintergrundbild ist Dekoration. Screenreader überspringen es, und es hat keinen Alternativtext. Ein Bild, das Bedeutung trägt, gehört in ein
<img>-Element.
background-size: cover, contain und Längen
background-size skaliert das Bild. Die beiden Schlüsselwörter behalten seine Proportionen bei:
Das Bild ist doppelt so breit wie hoch, und jede Box ist quadratisch.
| Wert | Ergebnis |
|---|---|
auto (Standard) | Die eigene Größe des Bildes |
cover | Skaliert, bis die Box vollständig gefüllt ist; der Überstand wird abgeschnitten |
contain | Skaliert, bis das ganze Bild hineinpasst; an zwei Seiten bleiben graue Streifen |
200px | 200px breit, Höhe proportional |
50% auto | Halb so breit wie die Box, Höhe proportional |
100% 100% | Genau die Größe der Box; verzerrt das Bild, wenn die Proportionen abweichen |
cover ist die übliche Wahl für Hero-Banner und Karten. contain ist für Logos und Illustrationen, die nie abgeschnitten werden dürfen.
background-position und background-repeat
background-position platziert das Bild in der Box, mit Schlüsselwörtern (top, center, bottom, left, right), Prozentwerten oder Längen. background-repeat steuert das Kacheln. Probier ein paar Werte aus:
Probier die Positionen top right, bottom 10px right 20px und 25% 75% und die Wiederholungswerte repeat-x, repeat-y, space (Kacheln mit Lücken, damit keine abgeschnitten wird) und round (Kacheln in der Größe angepasst, damit eine ganze Zahl hineinpasst).
Ebenen: mehrere Hintergründe und ein Text-Overlay
background-image nimmt eine durch Kommas getrennte Liste. Die erste Ebene wird obenauf gezeichnet. Der häufigste Einsatz ist ein halbtransparenter Farbverlauf über einem Foto, damit weißer Text lesbar bleibt:
aspect-ratio gibt der leeren Box eine Höhe, und background-size: cover gilt für beide Ebenen. Mehr Rezepte für Verläufe findest du unter CSS Farbverlauf.
Die Kurzschreibweise background
background setzt alle Hintergrund-Eigenschaften in einer Zeile. Die Größe muss direkt nach der Position stehen, getrennt durch einen Schrägstrich, und die Farbe gehört in die letzte Ebene:
.hero {
background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
background-image: url("hero.jpg");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
background-color: #1f2937;
}
Die Ersatzfarbe ist zu sehen, während das Bild lädt, und falls es nicht lädt. Jede Eigenschaft, die du in der Kurzschreibweise weglässt, wird auf ihren Standardwert zurückgesetzt. Setz die Kurzschreibweise also zuerst und die einzelnen Eigenschaften danach.
Weitere Hintergrund-Eigenschaften
| Eigenschaft | Was sie macht |
|---|---|
background-attachment: fixed | Das Bild bleibt stehen, während die Seite scrollt (in Safari auf iOS ignoriert) |
background-origin | Ob die Position an der Rahmen-, Padding- oder Inhaltskante beginnt |
background-clip | Wo der Hintergrund gemalt wird, auch text, um Buchstaben zu füllen |
background-blend-mode | Mischt Ebenen miteinander, etwa multiply |
Häufige Fehler
- Ein falscher Pfad.
url()in einem Stylesheet ist relativ zur CSS-Datei, nicht zur HTML-Seite. - Ein leeres Element. Es hat keine Höhe, also hat das Bild keinen Platz, um sichtbar zu werden.
no-repeatvergessen beicontainoder einem kleinen Bild: Es wird gekachelt.- Mit
100% 100%strecken, obwohlcovergemeint war. - Wichtige Bilder als Hintergrund. Nimm für Inhalt
<img>mit Alternativtext; Hintergründe sind für Screenreader unsichtbar. - Fehlende Anführungszeichen um eine
data:-URL, die Leerzeichen oder Anführungszeichen enthält. Schreib immerurl("...").
Häufig gestellte Fragen
Wie füge ich in CSS ein Hintergrundbild hinzu?
Nimm background-image: url("photo.jpg"); am Element. Der Pfad ist relativ zur CSS-Datei (oder zur Seite, bei einem style-Attribut oder einem <style>-Element). Gib dem Element eine Größe, denn ein Hintergrund lässt ein leeres Element nie wachsen.
Wie lasse ich ein Hintergrundbild das ganze Element bedecken?
Mit background-size: cover; und background-position: center;. Das Bild skaliert unter Beibehaltung seiner Proportionen, bis es die Box vollständig füllt, und der Überstand wird abgeschnitten.
Was ist der Unterschied zwischen cover und contain?
cover füllt die ganze Box und schneidet ab, was nicht passt. contain zeigt das ganze Bild und lässt an zwei Seiten leeren Platz, wenn die Proportionen abweichen.
Wie verhindere ich, dass sich ein Hintergrundbild wiederholt?
Füge background-repeat: no-repeat; hinzu. Standardmäßig wird ein Hintergrundbild in beide Richtungen gekachelt, um das Element zu füllen.
Warum wird mein Hintergrundbild nicht angezeigt?
Die üblichen Ursachen sind ein falscher Pfad in url() (er ist relativ zur CSS-Datei), ein Element ohne Höhe, weil es keinen Inhalt hat, oder eine spätere background-Kurzschreibweise, die das Bild zurückgesetzt hat.