The CSS Podcast – 053: Background
Hintergründe
Hinter jedem CSS-Feld befindet sich eine spezielle Ebene, die als Hintergrundebene bezeichnet wird. CSS bietet eine Vielzahl von Möglichkeiten, sinnvolle Änderungen daran vorzunehmen, einschließlich der Möglichkeit, mehrere Hintergründe zuzulassen.
Hintergrundebenen werden am weitesten vom Nutzer entfernt und hinter den Inhalten eines Felds gerendert, beginnend bei ihrem padding-box
-Bereich. Dadurch wird verhindert, dass sich die Hintergrundebene mit den Rahmen überschneidet.
Hintergrundfarbe
Einer der einfachsten Effekte, die Sie auf eine Hintergrundebene anwenden können, ist das Festlegen der Farbe. Der Anfangswert von background-color
ist transparent
. Dadurch ist der Inhalt eines übergeordneten Elements sichtbar. Ein gültiger Farbsatz einer Hintergrundebene befindet sich hinter anderen Elementen, die auf diesem Element dargestellt sind.
Hintergrundbilder
Über der Ebene background-color
kannst du mithilfe der Eigenschaft background-image
ein Hintergrundbild hinzufügen. Ein background-image
akzeptiert Folgendes:
- Eine Bild-URL oder ein Daten-URI mit der CSS-Funktion
url
. - Ein Bild, das dynamisch mit einer Farbverlauf-CSS-Funktion erstellt wird.
Hintergrundbild mit der CSS-Funktion url
festlegen
CSS-Farbverlauf-Hintergründe
Es gibt mehrere CSS-Funktionen für den Farbverlauf, mit denen Sie ein Hintergrundbild generieren können, wenn zwei oder mehr Farben übergeben werden.
Unabhängig davon, welche Gradientenfunktion verwendet wird, wird das resultierende Bild direkt an den verfügbaren Platz angepasst.
Beispiel für die Anwendung eines Hintergrundbilds mithilfe von Farbverlaufsfunktionen:
Sich wiederholende Hintergrundbilder
Standardmäßig werden Hintergrundbilder horizontal und vertikal wiederholt, um die gesamte Fläche der Hintergrundebene auszufüllen.
Ändern Sie dies, indem Sie das Attribut background-repeat
mit einem der folgenden Werte verwenden:
repeat
: Das Bild wird im verfügbaren Bereich wiederholt und es wird bei Bedarf zugeschnitten.round
: Das Bild wird horizontal und vertikal wiederholt, um in den verfügbaren Platz so viele Instanzen zu finden. Wenn der verfügbare Platz größer wird, wird das Bild gestreckt und nach der Hälfte der ursprünglichen Breite des Bildes komprimiert, um weitere Bildinstanzen hinzuzufügen.space
: Das Bild wird horizontal und vertikal wiederholt, um in den verfügbaren Bereich des Bildes einzupassen, ohne abgeschnitten zu werden. Sich wiederholende Bilder berühren die Ränder der Fläche, die eine Hintergrundebene einnimmt, und der Leerraum ist gleichmäßig zwischen ihnen verteilt.
Mit der Eigenschaft background-repeat
können Sie die Funktionsweise der X- und der Y-Achse unabhängig voneinander festlegen. Mit dem ersten Parameter wird das horizontale Wiederholungsverhalten festgelegt, mit dem zweiten das vertikale Wiederholungsverhalten.
Wenn Sie einen einzelnen Wert verwenden, wird er sowohl auf die horizontalen als auch die vertikale Wiederholungen angewendet.
Die Kurzinfo bietet auch praktische Ein-Wort-Optionen, um Ihre Absichten klarer zu machen.
Mit dem Wert repeat-x
wird ein Bild nur horizontal wiederholt. Dies entspricht repeat no-repeat
.
In der folgenden Demo werden diese Funktionen des Attributs background-repeat
veranschaulicht:
Hintergrundposition
Sie haben vielleicht bemerkt, dass einige Bilder im Web oben links in ihrem Container angezeigt werden, wenn sie mit einer background-repeat: no-repeat
-Deklaration versehen sind.
Hintergrundbilder werden oben links positioniert. Mit der Eigenschaft background-position
können Sie dieses Verhalten ändern, indem Sie die Bildposition verschieben.
Wie bei background-repeat
können Sie mit der background-position
-Eigenschaft Bilder entlang der X- und Y-Achse standardmäßig unabhängig mit zwei Werten positionieren.
Bei Verwendung von CSS-Längen und -Prozentsätzen entspricht der erste Parameter der horizontalen Achse, der zweite Parameter der vertikalen Achse.
Wenn Keywords nur verwendet werden, spielt die Reihenfolge der Keywords keine Rolle:
background-position: left 50%;
background-position: top left;
background-position: left top;
background-position: 50% left;
background-position: left right;
Für das Attribut background-position
gibt es auch eine praktische Kurzschreibweise: Der weggelassene Wert wird in 50%
aufgelöst. Das folgende Beispiel veranschaulicht dies anhand der Keywords, die von der background-position
-Property akzeptiert werden:
Zusätzlich zur standardmäßigen Form mit zwei und einem Parameter kann die background-position
-Eigenschaft bis zu vier Parameter verwenden.
Wenn drei oder vier Parameter verwendet werden, muss den top
-, left
-, right
- oder bottom
-Keywords eine CSS-Länge oder ein CSS-Prozentsatz vorangestellt werden, damit der Browser berechnet, von welchem Rand der CSS-Box der Versatz stammen soll.
Wenn drei Parameter verwendet werden, kann ein CSS-Längen- oder -Wert der zweite oder dritte Parameter sein, wobei die anderen beiden Keywords sind. Anhand des erfolgreichen Schlüsselworts wird die Kante bestimmt, für die die CSS-Länge oder der CSS-Wert den Versatz darstellt. Der Offset des anderen angegebenen Keywords ist auf 0 gesetzt.
background-position: bottom 88% right;
background-position: right bottom 88%;
background-position: 88% bottom right;
background-position: bottom 88% right 33%;
background-position: right 33% bottom 88%;
background-position: 88% 33% bottom left;
Wenn background-position: top left 20%
auf ein CSS-Hintergrundbild angewendet wird, wird das Bild oben im Feld platziert. Der Wert 20%
entspricht einem Abstand von 20% zur linken Seite des Felds (auf der X-Achse).
Wenn background-position: top 20% left
auf ein CSS-Hintergrundbild angewendet wird, entspricht der Wert von 20% einem Versatz von 20% vom oberen Rand des CSS-Felds (auf der Y-Achse) und das Bild wird links im Feld platziert.
Bei Verwendung von vier Parametern werden die beiden Keywords mit zwei Werten gekoppelt, die einem Versatz gegenüber den Ursprüngen der angegebenen Keywords entsprechen. Wenn background-position: bottom 20% right 30%
auf ein Hintergrundbild angewendet wird, wird das Hintergrundbild 20% vom unteren Rand und 30% von rechts neben dem CSS-Feld positioniert.
In der folgenden Demo wird dieses Verhalten veranschaulicht:
Hier sind weitere Beispiele für die Verwendung der Eigenschaft background-position
mit einer Mischung aus CSS- und Keyword-Werten:
Hintergrundgröße
Mit der Eigenschaft background-size
wird die Größe der Hintergrundbilder festgelegt. Die Größe von Hintergrundbildern basiert standardmäßig auf ihrer intrinsischen (tatsächlichen) Breite und Höhe und ihrem Seitenverhältnis.
Die background-size
-Property verwendet CSS-Längen- und Prozentwerte oder bestimmte Keywords. Für die -Eigenschaft sind bis zu zwei Parameter zulässig, mit denen Sie die Breite und Höhe eines Hintergrunds unabhängig ändern können.
Für die Property background-size
werden die folgenden Keywords akzeptiert:
auto
: Bei unabhängiger Verwendung wird die Größe des Hintergrundbilds an die vorgegebene Breite und Höhe angepasst. Wirdauto
zusammen mit einem anderen CSS-Wert für die Breite (erster Parameter) oder die Höhe (zweiter Parameter) verwendet, wird die Dimension mit dem Wertauto
so angepasst, dass das natürliche Seitenverhältnis des Bildes erhalten bleibt. Das ist das Standardverhalten des Attributsbackground-size
.cover
: Deckt den gesamten Bereich der Hintergrundebene ab. Dies kann bedeuten, dass das Bild gestreckt oder zugeschnitten ist.contain
: Die Größe des Bildes wird so angepasst, dass der gesamte Raum ausgefüllt wird. Es wird nicht gestreckt oder abgeschnitten. Daher kann Leerraum bleiben, der dazu führt, dass sich das Bild wiederholt, es sei denn,background-repeat
ist aufno-repeat
gesetzt.
Die beiden letzten Optionen sind für die eigenständige Verwendung ohne weiteren Parameter vorgesehen.
In der folgenden Demo werden diese Keywords in Aktion gezeigt:
Demo zur Anwendung dieser Keywords auf background-size
:
Hintergrundanhang
Mit der Eigenschaft background-attachment
können Sie das Verhalten für feste Positionen von Hintergrundbildern (Bilder als Teil einer Hintergrundebene) ändern, sobald die Ebene auf dem Bildschirm sichtbar ist.
Zulässig sind drei Keywords: scroll
, fixed
und local
.
Das Standardverhalten des Attributs background-attachment
ist der Anfangswert von scroll
. Wenn mehr Platz benötigt wird, bewegen sich die Bilder mit diesem Abstand innerhalb der Hintergrundebene, die durch die Grenzen des CSS-Felds bestimmt wird.
Mit dem Wert fixed
wird die Position von Hintergrundbildern im Darstellungsbereich fixiert.
Sobald die Bilder der Hintergrundebene ursprünglich vom Bildschirm aus gescrollt (oder gerendert werden) müssen, bleiben die Bilder innerhalb der Hintergrundebene an ihrer ursprünglichen Position, die durch die Hintergrundebene aktiviert wurde, bis die gesamte Ebene vom Darstellungsbereich über den Bildschirm hinausgescrollt wird.
Das Schlüsselwort local
ermöglicht, dass die Position von Hintergrundbildern relativ zum Inhalt des Elements festgelegt werden kann. Hintergrundbilder bewegen sich nun entlang des Raumes, den sie einnehmen, da dieser Raum innerhalb und außerhalb der Grenzen des CSS-Felds gerendert wird (normalerweise durch Scrollen, 2D- oder 3D-Transformationen).
Hintergrundursprung
Mit der Eigenschaft background-origin
kannst du den mit einem bestimmten Feld verknüpften Hintergrundbereich ändern. Die von der Property akzeptierten Werte entsprechen den border-box
-, padding-box
- und content-box
-Regionen einer Box .
Probieren Sie diese Optionen anhand der folgenden Demo aus:
Hintergrundclip
Mit der Eigenschaft background-clip
wird gesteuert, was von einer Hintergrundebene unabhängig von den mit der Eigenschaft background-origin
erstellten Grenzen dargestellt wird.
Wie bei background-origin
können auch die Regionen border-box
, padding-box
und content-box
angegeben werden. Sie entsprechen den Regionen, in denen eine CSS-Hintergrundebene gerendert werden kann. Bei Verwendung dieser Keywords wird jedes Rendering des Hintergrunds, der über dem angegebenen Bereich liegt, zugeschnitten oder beschnitten.
Die Eigenschaft background-clip
akzeptiert auch ein text
-Keyword, mit dem der Hintergrund so zugeschnitten wird, dass er nicht weiter als der Text im Inhaltsfeld ist. Damit dieser Effekt im Text in einem CSS-Feld deutlich wird, muss der Text teilweise oder vollständig transparent sein.
Zum Zeitpunkt der Veröffentlichung dieses Dokuments benötigen Chrome und die meisten Browser eine relativ neue Property, die das Präfix -webkit-
erfordert, um sie zu verwenden.
Mehrere Hintergründe
Wie zu Beginn des Moduls erwähnt, können mit der Hintergrundebene mehrere Unterebenen definiert werden. Der Einfachheit halber bezeichne ich diese Unterebenen als Hintergründe.
Es werden mehrere Hintergründe von oben nach unten definiert. Der erste Hintergrund ist dem Nutzer am nächsten, während der letzte Hintergrund am weitesten vom Nutzer entfernt ist.
Die einzige definierte oder letzte Ebene wird vom Browser als endgültige Hintergrundebene festgelegt. Nur diese Ebene darf eine background-color
zuweisen.
Mehrere Ebenen können individuell mit den meisten hintergrundbezogenen CSS-Eigenschaften konfiguriert werden, die durch Kommas getrennt sind, wie im Code-Snippet und der Live-Demo unten gezeigt.
background-image: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png"),
url("https://assets.codepen.io/7518/blob.svg"),
linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5));
background-size: contain, cover, auto;
background-repeat: no-repeat, no-repeat, no-repeat;
background-position: 50% 50%, 10% 50%, 0% 0%;
background-origin: padding-box, border-box, content-box;
Die Kurzform des Hintergrunds
Um die Gestaltung der Hintergrundebene einer Box zu erleichtern, insbesondere wenn mehrere Hintergrundebenen erwünscht sind, gibt es eine Kurzschreibweise, die dem folgenden Muster folgt:
background:
<background-image>
<background-position> / <background-size>?
<background-repeat>
<background-attachment>
<background-origin>
<background-clip>
<background-color>?
Die Reihenfolge ist in der Kurzform der Angabe mehrerer Hintergründe wichtig. Die Werte für Position und Größe müssen angegeben werden, getrennt durch einen Schrägstrich (/
). Wenn Sie Ursprung und Clipverhalten in der richtigen Reihenfolge angeben, können Sie Keywords festlegen, die für beide gleichzeitig gültig sind.
Mit der folgenden Deklaration wird der Hintergrund zugeschnitten und aus dem Inhaltsfeld übernommen:
background: url("https://assets.codepen.io/7518/blob.svg") 50%
50% / contain no-repeat content-box;
Unter Berücksichtigung dieser Kurzform der Semantik könnten die vorherigen hintergrundbezogenen Deklarationen des Code-Snippets so umgeschrieben werden:
background: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png") 50% 50%/contain no-repeat padding-box, url("https://assets.codepen.io/7518/blob.svg") 10% 50% / cover border-box, linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5) ) 0% 0% / cover no-repeat content-box ;
Überprüfen Sie Ihr Wissen
Testen Sie Ihr Wissen über CSS-Hintergründe
Hintergrundbilder werden oben links in einem CSS-Feld positioniert.
background-position
muss explizit verwendet werden, um die Standardposition eines Hintergrundbilds zu ändern.
Hintergrundbilder werden nicht standardmäßig wiederholt.
background-repeat: no-repeat
muss explizit verwendet werden, wenn ein Hintergrundbild nicht wiederholt werden soll. Außerdem können background-repeat: repeat-x
und background-repeat: repeat-y
verwendet werden, um Wiederholungen auf der jeweiligen Achse zu verhindern.
Welche der folgenden background-position
-Deklarationen sind gültig?
background-position: 50% left
background-position: top right 33%
background-position: right bottom
background-position: left
So legen Sie fest, dass ein Hintergrundbild innerhalb eines von Ihnen verwendeten Darstellungsbereichs fixiert wird:
background-position: fixed
background-position
.“
background-fixed-to-viewport: true
background-fixed-to-viewport
ist im Preisvergleichsportal noch nicht vorhanden.
background-attachment: fixed
background-attachment: fixed
legt explizit fest, dass das Hintergrundbild im aktuellen Darstellungsbereich fixiert wird.
background-attachment: scroll
background-attachment
ist die Eigenschaft, die verwendet werden soll, um ein Hintergrundbild festzulegen, das in einem Darstellungsbereich fixiert werden soll. scroll
ist jedoch der Standardwert für die Eigenschaft, die das Hintergrundbild standardmäßig an das Rechteck anpasst, das nicht vom Inhalt des Felds betroffen ist.
Der standardmäßige Hintergrund-Ursprung eines Hintergrunds in einem CSS-Feld ist:
content-box
background-origin
, aber nicht der Standardwert.
border-box
background-origin
und seine vorab arrangierten Rahmen können als Hintergrund gezeichnet werden. Dies ist jedoch nicht die Standardeinstellung.
padding-box
background-origin
. Der Hintergrund kann über den Inhalt und bis zum Rand eines Felds gerendert werden.
margin-box
background-origin
.