Erneute Betrachtung der CSS-Background-Eigenschaft
German (Deutsch) translation by Ines Willenbrock (you can also view the original English article)
In diesem Tutorial werden wir uns eine der älteren, vertrauteren CSS-Eigenschaften ansehen: background
. background
ist eine von mehreren CSS-Eigenschaften, deren Funktionen oft übersehen werden. Tatsächlich gab es ein Upgrade mit CSS3, das neue Funktionen erhielt, die über das Hinzufügen eines Hintergrundbildes oder einer Hintergrundfarbe hinausgehen. Schauen wir uns einige von ihnen an!
1. Versatz der Hintergrundposition
Das Positionieren einer Hintergrundgrafik ist einfach und etwas, mit dem Sie wahrscheinlich bereits vertraut sind. Wenn wir den Hintergrund unten rechts im Element positionieren möchten, wenden wir bottom right
auf background-position
an. Zum Beispiel:
1 |
#workspace { |
2 |
width: 100%; |
3 |
max-width: 668px; |
4 |
height: 400px; |
5 |
background-color: #525d62; |
6 |
background-image: url(images/macbook.png); |
7 |
background-repeat: no-repeat; |
8 |
background-position: right bottom; |
9 |
}
|
Oder, bei der Kurzschreibweise, background
, nach der URL-Definition:
1 |
#workspace { |
2 |
width: 100%; |
3 |
max-width: 668px; |
4 |
height: 400px; |
5 |
background: #525d62 url(images/macbook.png) no-repeat right bottom; |
6 |
}
|
Seit dem Aufkommen von CSS3 konnten wir den Positionsversatz angeben; die genauen Abstände zu den eingestellten Positionen. In unserem Beispiel von bottom right
fügen wir bottom 20px right 30px
ein, um unseren Hintergrund bei 20px
von unten und 30px
von links zu positionieren.
1 |
#workspace { |
2 |
width: 100%; |
3 |
max-width: 668px; |
4 |
height: 400px; |
5 |
background-color: #525d62; |
6 |
background-image: url(images/macbook.png); |
7 |
background-repeat: no-repeat; |
8 |
background-position: right 30px bottom 20px; |
9 |
}
|
Die Positionen (bottom
, top
, right
, left
) können in beliebiger Reihenfolge definiert werden, die Versatzlänge muss jedoch nach jeder Hintergrundposition definiert werden.
Dank geht an Metin Kazan für die Illustrationen.
2. Mehrere Hintergrundbilder
Die background
-Eigenschaft ermöglicht es uns auch, mehrere Hintergrundbilder hinzuzufügen. Lassen Sie uns daher unser vorheriges Beispiel mit mehr Dingen und Gadgets erweitern.
Wir fügen diese Bilder zu einer einzelnen background
- oder background-image
-Deklaration hinzu, indem wir jedes Bild durch ein Komma trennen. Wir verwenden die background-position
-Eigenschaft, die auch mehrere Werte akzeptiert, um jedes dieser Hintergrundbilder zu steuern.
1 |
#workspace { |
2 |
height: 400px; |
3 |
background-color: #525d62; |
4 |
background-image: |
5 |
url(images/macbook.png), |
6 |
url(images/mouse.png), |
7 |
url(images/hdd.png), |
8 |
url(images/phone.png), |
9 |
url(images/ipad.png), |
10 |
url(images/coffee.png), |
11 |
url(images/camera.png); |
12 |
background-repeat: no-repeat; |
13 |
background-position: |
14 |
50% 50%, /* macbook.png */ |
15 |
75% 295px, /* mouse.png */ |
16 |
75% 230px, /* hdd.png */ |
17 |
96% 240px, /* phone.png */ |
18 |
20% 250px, /* ipad.png */ |
19 |
22% 190px, /* coffee.png */ |
20 |
7% 280px; /* camera.png */ |
21 |
}
|
Wir können feste Einheiten (z. B. Pixel), flexible Einheiten (z. B. Prozentsätze) oder eine Kombination aus beiden verwenden.
Jedes Wertepaar stellt Koordinaten von oben links im Containerelement bis oben links im Bild dar. Zum Beispiel ist die obere linke Seite des Kamerabildes 280px von der Oberseite des Containers, dann 7% der verfügbaren Breite von links.



Hinweis: Die verfügbare Breite ist die Gesamtbreite des Containerelements abzüglich der Breite des Hintergrundbilds. Daher erscheint ein Hintergrundbild, das zu 50% entlang der x-Achse positioniert ist, genau zentriert!



Bewegung
Da die background-position
eine animierbare Eigenschaft ist, können wir außerdem einen lebendigeren, überzeugenderen Hintergrund schaffen:
1 |
#workspace { |
2 |
width: 600px; |
3 |
height: 400px; |
4 |
background-color: #525d62; |
5 |
background-repeat: no-repeat; |
6 |
background-image: |
7 |
url(images/macbook.png), |
8 |
url(images/mouse.png), |
9 |
url(images/hdd.png), |
10 |
url(images/phone.png), |
11 |
url(images/ipad.png), |
12 |
url(images/coffee.png), |
13 |
url(images/camera.png); |
14 |
background-position: |
15 |
50% 50%, |
16 |
430px 295px, |
17 |
425px 230px, |
18 |
480px 240px, |
19 |
105px 250px, |
20 |
120px 190px, |
21 |
40px 280px; |
22 |
animation: 3s ease 0s inView forwards; |
23 |
}
|
24 |
@keyframes inView { |
25 |
0% { |
26 |
background-position-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px; |
27 |
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%; |
28 |
}
|
29 |
20% { |
30 |
background-position-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px; |
31 |
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%; |
32 |
}
|
33 |
30% { |
34 |
background-position-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px; |
35 |
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%; |
36 |
}
|
37 |
40% { |
38 |
background-position-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px; |
39 |
background-position-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%; |
40 |
}
|
41 |
50% { |
42 |
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; |
43 |
background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%; |
44 |
}
|
45 |
60% { |
46 |
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; |
47 |
background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%; |
48 |
}
|
49 |
100% { |
50 |
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px; |
51 |
}
|
52 |
}
|
Hier haben wir eine Reihe von Keyframes entlang einer Zeitleiste eingerichtet. Bei jedem Keyframe haben wir die background-position-x
und die background-position-y
jedes Hintergrundbildes geändert. Die Animation ist zugegebenermaßen rudimentär, also bitte den CodePen forken und verbessern!
Hinweis: Klicken Sie unten rechts im Pen auf Rerun, um die Animation anzuzeigen
Weitere Informationen zu CSS-Animationen
- CSS-AnimationEine Einführung für Anfänger in CSS-AnimationCatalin Miron
- AnimationIhre Animationen im Web ansprechend gestaltenDonovan Hutchinson
- AnimationZeichen auf der gepunkteten Linie: Animieren der eigenen SVG-SignaturIan Yates
Ein paar bemerkenswerte Punkte
Die von uns verwendeten Hintergründe sind nacheinander angeordnet. Der allererste in der Liste wird oben im Stapel angezeigt, während der letzte aufgelistete am unteren Rand des Hintergrundstapels angezeigt wird.
1 |
#workspace { |
2 |
width: 600px; |
3 |
height: 400px; |
4 |
background-color: #525d62; |
5 |
background-image: |
6 |
url(images/macbook.png), |
7 |
url(images/mouse.png), |
8 |
url(images/hdd.png), |
9 |
url(images/phone.png), |
10 |
url(images/ipad.png), |
11 |
url(images/coffee.png), |
12 |
url(images/camera.png); /* stacked at the bottom */ |
13 |
background-repeat: no-repeat; |
14 |
}
|
Alle Hintergrund-Untereigenschaften (background-repeat
, background-size
, background-position
etc.) können mehrfach definiert werden, mit Ausnahme von background-color
. Wenn wir mehrere Hintergründe mit der Shorthand der Eigenschaft background
anwenden, definieren Sie die Hintergrundfarbe als den neuesten Wert, der wirksam wird. Zum Beispiel:
1 |
#workspace { |
2 |
height: 400px; |
3 |
background: |
4 |
url(images/macbook.png) 50% 50% no-repeat, |
5 |
url(images/mouse.png) 430px 295px no-repeat, |
6 |
url(images/camera.png) 425px 230px no-repeat #525d62; |
7 |
}
|
Alternativ können Sie nach der Shorthand-Eigenschaft eine separate background-color
hinzufügen:
1 |
#workspace { |
2 |
width: 600px; |
3 |
height: 400px; |
4 |
background: |
5 |
url(images/macbook.png) 50% 50% no-repeat, |
6 |
url(images/mouse.png) 430px 295px no-repeat, |
7 |
url(images/camera.png) 425px 230px no-repeat; |
8 |
background-color: #525d62; |
9 |
}
|
Beide Codes tun dasselbe, aber ich finde letztere intuitiver und lesbarer.
3. Hintergrundbild mischen
Der background-blend-mode
macht das gleiche wie in Grafikanwendungen wie Photoshop oder Gimp; Es mischt Hintergrundbilder miteinander sowie mit allem, was darunter liegt.
Der background-blend-mode
nimmt unter anderem bekannte Werte wie overlay
und multiply
, die Jonathan Cutrell in seinem Tutorial zu diesem Thema fantastisch erklärt. Ich empfehle Ihnen dringend, es durchzulesen, damit wir in einige praktische Beispiele einsteigen können.
Es gibt mehrere Möglichkeiten, den CSS Blend Mode zu verwenden, um auffällige Designs zu erstellen, z. B. das Mischen eines Farbverlaufs mit einem Bild, auf das Ian Yates in seiner Inspirationsrunde hinweist:
Um diesen Effekt zu erzeugen, fügen wir ein Hintergrundbild und einen Farbverlauf hinzu und wenden den overlay
-Mischmodus an.
1 |
#blend { |
2 |
background-repeat: no-repeat; |
3 |
background-image: url( 'img/people-15.jpg' ), |
4 |
linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%); |
5 |
background-blend-mode: overlay; |
6 |
}
|
Das Overlay wirkt sich auf beide der hier aufgeführten Hintergründe aus, daher müssen Sie möglicherweise vorsichtig sein, wenn Sie nicht möchten, dass alles miteinander vermischt wird. Wenn wir vermeiden möchten, dass alles mit der Hintergrundfarbe verschmilzt, setzen Sie den zweiten Wert auf normal
, der für unser zweites Hintergrundbild gilt.
1 |
#blend { |
2 |
background-repeat: no-repeat; |
3 |
background-image: url( '../img/people-15.jpg' ), |
4 |
linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%); |
5 |
background-color: yellow; |
6 |
background-blend-mode: overlay, normal; |
7 |
}
|
4. Hintergrund-Clipping
Die background-clip
-Eigenschaft ist ein Werkzeug, das steuert, wie sich die Hintergrundfarbe und das Bild innerhalb des CSS-Content-Box-Models erstrecken. Ähnlich wie die box-sizing
-Eigenschaft nimmt die background-clip
-Eigenschaft drei gültige Werte an, nämlich:
-
border-box
ist der Standardwert, der das Hintergrundbild oder die Hintergrundfarbe bis zum äußeren Rand des Elements umfasst. -
padding-box
erstreckt sich über den Hintergrund bis zum äußeren Rand des Paddings, oder mit anderen Worten; der innere Rand des Rahmens. -
content-box
behält den Hintergrund innerhalb des Elementinhalts wie folgt bei:
Ein praktisches Beispiel, bei dem ich background-clip
als praktisch empfunden habe, ist, wenn ich eine Schaltfläche mit einem Symbol mit einem einzigen Element erstellen muss. In der folgenden Demo erstreckt sich unser Bild vom linken bis zum rechten Rand des Elements, auch wenn wir auf jeder Seite Padding hinzufügen, da immer noch border-box
gilt.
Wenn wir das Icon mit etwas Leerraum umgeben möchten, müssten wir es traditionell mit einem anderen Element umschließen und auf dieses zusätzliche Element auffüllen. Mit der background-clip
-Eigenschaft können wir dies elegant tun, indem wir es auf content-box
setzen und das Padding durch Rahmen der gleichen Farbe wie die Hintergrundfarbe ersetzen.
Zusammengefasst
Die background
-Eigenschaft ist eine, die wir häufig in unseren Projekten verwenden. Hoffentlich hat dieser Artikel Sie an seine breiten und vielfältigen Anwendungen erinnert, und ich freue mich darauf, weitere Ideen in den Kommentaren zu hören.
Ein letzter Hinweis: Die Browserunterstützung für diese Eigenschaften (mit Ausnahme des background-blend-mode
) ist großartig. Laut CanIUse werden ab Internet Explorer 9 mehrere Hintergründe unterstützt, mit nur ein paar trivialen Problemen. Hintergrundbildoptionen, z. B. die background-clip
-Eigenschaft, sind fast genauso gut.
Mischmodi funktionieren zum Zeitpunkt des Schreibens am besten in Chrome, Opera, sind teilweise in Safari aufgrund einiger Fehler anwendbar, scheinen aber leider keine Anzeichen von Fortschritten mit Microsoft Edge gemacht zu haben.


