CSS Hintergrundbilder
Der Hintergrund eines Elements kann als Farbe, als Hintergrundbild oder als Kombination aus beidem festgelegt werden. Mit CSS lassen sich Hintergrundbilder horizontal und vertikal wiederholen oder einzeln platzieren. Hintergründe werden nicht vererbt.
Eigenschaften
background-image:url(bild.gif)background-repeat:repeat | no-repeat | repeat-x | repeat-y;background-position:left top | center | 20px 50%;background-attachment:scroll | fixed | local;background-size:auto | 100% 100% | cover | contain;
background-image
Mit background-image wird ein Bild als Hintergrund eines Elements definiert. Ohne
weitere Angaben wird das Bild in seiner Originalgrösse dargestellt und automatisch wiederholt.
url()Verweist auf die Bilddatei, die als Hintergrund verwendet wird.noneEntfernt ein vorhandenes Hintergrundbild.
Originalgrösse und automatische Wiederholung
.bild1{background-image:url(bild.gif); }
background-repeat
background-repeat steuert, ob und wie ein Hintergrundbild
horizontal und/oder vertikal wiederholt wird.
Standardmässig wird ein Hintergrundbild in beide Richtungen gekachelt.
repeatWiederholt das Bild horizontal und vertikal.no-repeatAls einzelner Wert zeigt es das Bild nur einmal an.repeat-xWiederholt das Bild horizontal.repeat-yWiederholt das Bild vertikal.spaceVerteilt vollständig sichtbare Wiederholungen mit gleichmässigen Abständen.roundSkaliert die Wiederholungen so, dass sie ohne Anschnitt in die Fläche passen.
Zwei Werte
Bei zwei Werten steuert der erste die horizontale und der zweite die vertikale Wiederholung.
background-repeat: repeat no-repeat; /* entspricht repeat-x */
background-repeat: no-repeat repeat; /* entspricht repeat-y */
background-repeat: space no-repeat; /* horizontal space, vertikal keine Wiederholung */
background-repeat: round no-repeat; /* horizontal round, vertikal keine Wiederholung */
Horizontal wiederholen mit repeat-x
.bild2 {
background-image:url(bild.gif);
background-repeat:repeat-x;}
Vertikal wiederholen mit repeat-y
.bild3 {
background-image:url(bild.gif);
background-repeat:repeat-y;}
Gleichmässige Abstände mit space
.bild-space {
background-image: url(bild.gif);
background-repeat: space no-repeat;
}
Passend skalieren mit round
.bild-round {
background-image: url(bild.gif);
background-repeat: round no-repeat;
}
background-position
background-position bestimmt die Position eines Hintergrundbildes innerhalb eines
Elements. Die Werte beziehen sich auf die Fläche des Elements.
left | center | rightPositioniert das Bild horizontal.top | center | bottomPositioniert das Bild vertikal.px | remPositioniert das Bild mit einem festen Abstand.%Positioniert das Bild proportional zur verfügbaren Fläche.
Zwei Werte
Bei zwei Werten beschreibt der erste die horizontale und der zweite die vertikale Position. Wird
nur ein Wert angegeben, setzt der Browser den zweiten automatisch auf center.
background-position: left bottom;
background-position: right; /* entspricht: right center */
background-position: 20px 50%;
background-position: 10% 80%;
In der Mitte positionieren
.bild4 {
background: url(bild.gif) no-repeat center center;
}
Mit Prozent- und Pixelwerten positionieren
.bild5 {
background: yellow url(bild.gif) no-repeat 85% 20px ;
}
Prozentwerte
Bei Prozentwerten berücksichtigt der Browser die Breite des Elements und des Hintergrundbildes.
Position = (Elementbreite − Bildbreite) × Prozentwert
0%– Bild und Element sind links ausgerichtet.50%– Bild und Element sind zentriert.100%– Bild und Element sind rechts ausgerichtet.
Mehrere Hintergrundbilder
Mehrere Hintergrundbilder werden als kommagetrennte Ebenen angegeben. Das zuerst genannte Bild liegt zuoberst, jedes weitere eine Ebene darunter. Für jede Ebene lassen sich Position, Wiederholung und Grösse separat festlegen. Die Hintergrundfarbe liegt unter allen Bildern.
Fünf Hintergrundbilder
.multi-bgs {
background:
url(dots/1.png) no-repeat left top,
url(dots/2.png) no-repeat left bottom,
url(dots/3.png) no-repeat center center,
url(dots/4.png) no-repeat right top,
url(dots/5.png) no-repeat right bottom;
background-color: indigo;
}
background-attachment
background-attachment bestimmt, wie sich ein Hintergrundbild beim Scrollen verhält:
Es bewegt sich mit der Seite, scrollt mit dem Inhalt eines Elements oder bleibt am Viewport
fixiert.
-
scrollStandardverhalten – das Hintergrundbild ist an das Element gebunden und scrollt mit ihm, wenn die Seite gescrollt wird. Innerhalb eines scrollbaren Elements bleibt es stehen. -
fixedDas Hintergrundbild ist am Viewport fixiert und bleibt beim Scrollen der Seite an derselben Position. Wird häufig für einfache Parallax-Hintergründe genutzt. -
localDas Hintergrundbild ist an den scrollbaren Inhalt des Elements gebunden. Es bewegt sich nur, wenn das Element selbst scrollbar ist (z. B. beioverflow: auto).
Am Viewport fixiert
Das Beispiel ist im Hintergrund der
gesamten Seite sichtbar. Scrolle die Seite und beobachte, wie das Bild am Viewport fixiert
bleibt.
body {
background: url(bild.gif) no-repeat fixed right center;
}
background-size
Mit background-size wird festgelegt, wie gross ein Hintergrundbild innerhalb eines Elements dargestellt wird. Die Eigenschaft verändert die Grösse des Bildes, nicht die Grösse des Elements.
autoVerwendet die ursprünglichen Bildproportionen.200px autoLegt die Breite fest und berechnet die Höhe automatisch.100% 100%Passt Breite und Höhe an das Element an. Das Bild kann dabei verzerrt werden.coverFüllt das Element vollständig aus. Teile des Bildes können abgeschnitten werden.containZeigt das Bild vollständig. Dabei können freie Flächen entstehen.
Zwei Werte
Bei zwei Werten bestimmt der erste die Breite und der zweite die Höhe des Hintergrundbildes. Wird nur ein Wert angegeben, setzt der Browser den zweiten automatisch auf auto.
background-size: 200px auto;
background-size: 100% 100%;
Breite und Höhe in Prozent
background: url(bild.gif) no-repeat bottom left;
background-size: 100% 100%;
Feste Höhe
background: lavender url(bild.gif) no-repeat center;
background-size: auto 100px;
cover
background: url(bild.gif) no-repeat top left / cover;
contain
background: url(bild.gif) no-repeat center / contain;
Hintergrundbilder bestimmen die Elementgrösse nicht
Ein Hintergrundbild trägt nichts zur Grösse eines Elements bei. Anders als bei einem
<img> beeinflusst seine intrinsische Bildgrösse die Grösse des Elements
nicht. Ein leeres Element benötigt deshalb eine grössenbestimmende CSS-Angabe wie
height, min-height, aspect-ratio oder
padding.
.box {
aspect-ratio: 1 / 1;
background: url(bild.jpg) center / cover;
}
aspect-ratio gibt der leeren Box überhaupt erst eine Höhe (abhängig von ihrer
Breite), background-size: cover sorgt danach dafür, dass das Bild diese Box sauber
ausfüllt. Zwei unterschiedliche Aufgaben, die zusammenspielen – nicht ein Ersatz für den
anderen.
Kurzschreibweise background
Mit background lassen sich mehrere Hintergrund-Eigenschaften zusammenfassen.
background: #ccc url(blumen.gif) no-repeat fixed right bottom;
background: #ccc url(blumen.gif) no-repeat fixed right bottom / cover;
Eine gut lesbare Reihenfolge ist: Farbe → Bild → Repeat → Attachment → Position /
Size. Wird background-size angegeben, folgt der Wert nach der Position
und wird mit einem Schrägstrich / abgetrennt.
Kurz gesagt
background-repeat: Bei zwei Werten gilt der erste horizontal und der zweite vertikal.background-position: Der erste Wert gilt horizontal, der zweite vertikal.- Bei mehreren Hintergrundbildern liegt das zuerst genannte Bild zuoberst.
background-attachmentsteuert das Verhalten des Bildes beim Scrollen.background-sizebestimmt die Grösse des Bildes, nicht des Elements.- In der Kurzschreibweise wird
background-sizemit/vonbackground-positiongetrennt.