Menu

CSS Hintergrundbild: background-image, Größe und cover

background-image legt ein Bild oder einen Farbverlauf hinter den Inhalt eines Elements. Hier lernst du url() und Farbverläufe, background-size (cover und contain), background-position, background-repeat, das Übereinanderlegen mehrerer Hintergründe und die Kurzschreibweise background.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

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 div mit Hintergrundbild ist 0px hoch. Gib ihm Inhalt, Padding, eine height oder ein aspect-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.

WertErgebnis
auto (Standard)Die eigene Größe des Bildes
coverSkaliert, bis die Box vollständig gefüllt ist; der Überstand wird abgeschnitten
containSkaliert, bis das ganze Bild hineinpasst; an zwei Seiten bleiben graue Streifen
200px200px breit, Höhe proportional
50% autoHalb 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

EigenschaftWas sie macht
background-attachment: fixedDas Bild bleibt stehen, während die Seite scrollt (in Safari auf iOS ignoriert)
background-originOb die Position an der Rahmen-, Padding- oder Inhaltskante beginnt
background-clipWo der Hintergrund gemalt wird, auch text, um Buchstaben zu füllen
background-blend-modeMischt 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-repeat vergessen bei contain oder einem kleinen Bild: Es wird gekachelt.
  • Mit 100% 100% strecken, obwohl cover gemeint 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 immer url("...").

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.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S