CSS object-fit: die clevere Alternative zu Hintergrundbildern

Hintergrundbilder sind aus mordernen Webdesign Layouts nicht mehr wegzudenken und mittlerweile ein ganz normaler Bestandteil der meisten Webseiten. Sie werden besonders gerne bei großen Sektionen oder in Slidern genutzt, da sie im Vergleich zu "normalen" Bildern die Fähigkeit haben können (wie der Name schon sagt) als Hintergrund eines Elementes zu fungieren und das gesamte Element als Bild im Hintergrund auszufüllen. Man hat also unabhängig von der Bildschirmgröße immer ein optisch ausgefülltes Element, auch wenn der angezeigte Ausschnitt variieren kann (background-size: cover).

Die Probleme mit den Hintergrundbildern

Über viele Jahre wurden Hintergrundbilder bedenkenlos und teilweise im großen Stil im Webdesign (auch von uns) verwendet. Zum größten Teil ist dies auch noch heute der Fall (bei uns nicht mehr). Doch spätestens mit dem Beginn der stetig steigenden Anforderungen an die technische Qualität und die Geschwindigkeit von Webseiten, wurde der Einsatz von Hintergrundbildern mehr und mehr zum Problem. Denn:Hintergrundbilder sind nicht Bestandteil des HTML-Codes einer Webseite, sondern lediglich ein Design-Element, welches im CSS-Code angegeben wird. Und genau das ist sogar in mehrfacher Hisicht ein Problem.

Keine Bildgrößen-Versionen

Beim Upload eines Bildes in WordPress werden von jedem Bild sofort mehrere Versionen in verschiedenen Größen erzeugt, die je nach Bedarf und Bildschirmgröße im Frontend zur Anzeige benötigt werden. Das stellt sicher, dass bei jeder Bildschirmgröße möglichst ein Bild geladen wird, was nur so groß ist, dass es für eine vernünftige Anzeige ausreicht und nicht viel zu groß ist. Zwar werden auch von Hintergrundbildern mehrere Versionen angelegt, da WordPress ja im Moment des Uploads noch nicht wissen kann, dass wir das Bild als Hintergrundbild benutzen wollen. Allerdings werden nach dem Einbinden im Frontend keine dynamischen Bildgrößen abgerufen, sondern das Hintergrundbild wird in einer statischen Größe angezeigt. Da Hintergrundbilder meist komplette Sections abdecken, sind diese Bilder in der Praxis dann sogar recht groß um den Effekt zu verhindern, dass der Hintergrund zu pixelig dargestellt wird.

Problem: die Größe und somit die Ladezeit der angezeigten Webseite leiden darunter.

 

Kein Lazy Load

Moderne Webseiten und visuelle Editoren wie Oxygen oder Bricks verfügen mittlerweile standardmäßig über ein sog. Lazy Load Feature. Dies bedeutet, dass Bilder erst dann in die Webseite geladen werden, wenn der User an die entsprechende Stelle auf der Seite scrollt bzw. kurz davor. Dies verhindert, dass direkt beim Aufrufen einer Seite alle Bilder sofort geladen werden, was den Ladevorgang unnötig verzögert. Für Hintergrundbilder gilt dieses Feature jedoch nicht, da sie nicht Bestandteil des HTML-Codes der jeweiligen Seite sind und somit nicht von diesen Features aufgegriffen werden. Elementor hat zwar vor kurzem das experimentelle Feature von Lazy Load für Hintergrundbilder eingefügt, allerdings bleibt hier erst einmal abzuwarten, inwiefern diese Lösung wirklich funktioniert und wie diese sich auf die Ladezeiten der Webseite auswirkt (bitte nicht noch ein JavaScript).

Problem: auch hier leiden die Größe und somit die Ladezeit der angezeigten Webseite. Das Bild wird nicht nur nicht in einer optimalen Version angezeigt, sondern auch nicht "lazy geloadet".

 

SEO-Nachteile und Acessibility

Auch im Bereich SEO und Zugänglichkeit haben Hintergrundbilder klare Nachteile. Denn da sie nicht "normal" im HTML-Code der Webseite auftauchen, verfügen sie nicht über Meta-Attribute wie Alt- und Title. Gerade das Alt-Attribut ist jedoch wichtig, um beispielsweise sehbehinderten Menschen die Möglichkeit zu geben, sich die Beschreibung des Bilder vorlesen zu lassen.

 

Unsere Lösung: CSS object-fit

Wir haben für die Webseiten unserer Kunden eine spannende Lösung gefunden, um all diese Nachteile komplett zu umgehen und trotzdem die exakt selbe Optik auf Webseiten zu benutzen, als würden wir Hintergrundbilder verwenden. Das CSS-Feature object-fit.

CSS object-fit bietet eine Lösung für die Probleme, die durch die Verwendung von Hintergrundbildern entstehen können. Mit object-fit können Bilder direkt in ein HTML-Element eingebettet werden, was mehrere Vorteile bietet:

  • Erstens können Bilder mit object-fit skaliert werden, ohne dass sie ihre ursprüngliche Qualität verlieren. Das bedeutet, dass keine separate Versionen der Bilder in verschiedenen Größen erstellt werden müssen, wie es bei Hintergrundbildern der Fall ist. Das spart Zeit und reduziert die Größe der Webseite.
  • Zweitens bietet object-fit die Möglichkeit, Bilder so auszurichten, dass sie vollständig sichtbar sind, ohne dass Teile des Bildes abgeschnitten werden. Auch hier entfällt der Bedarf, separate Versionen der Bilder zu erstellen.
  • Drittens ermöglicht object-fit eine bessere Steuerung von Lazy Load. Da das Bild direkt in das HTML-Element eingebettet wird, kann es einfacher gesteuert werden, wann es geladen wird.
  • Viertens, object-fit bietet die Möglichkeit, Bilder mit Alt- und Title-Attributen zu versehen, was für eine bessere Zugänglichkeit und SEO der Webseite sorgt.

In der Praxis nutzen wir dieses Feature so, indem wir bspw. eine Section relativ positionieren und das Bild dann absolut innerhalb dieser Section positionieren, meist mit einem z-index von -1. Dadurch bilder das absolut positionierte Bild den Hintergrund der Section. Mit object-fit: cover kommt nun das beliebte Feature ins Spiel, bei dem sich das Bild so verhält, wie wir es von Hintergrundbildern gewohnt sind. Nun kann über dem Bild ein normaler Container eingefügt werden, in dem wir Content platzieren.

Insgesamt gibt es viele kleine und große Tricks, wie sich die Ladezeit und die Qualität einer Webseite deutlich verbessern lassen, ohne dass man dies auf den ersten Blick bei der Betrachtung der Webseite erkennt. CSS object-fit ist definitiv einer davon und wird bei uns in einer Vielzahl von Projekten eingesetzt.

Home
Webseite
Projekte
Kontakt