Responsive Bilder bereitstellen

Katie Hempenius
Katie Hempenius

Bei der Bereitstellung von Bildern in Desktop-Größe für Mobilgeräte können 2- bis 4-mal mehr Daten verbraucht werden als erforderlich. Befolgen Sie die Richtlinien auf dieser Seite, um die Nutzererfahrung zu verbessern, indem Sie unterschiedliche Bildgrößen an verschiedene Geräte liefern.

Responsive Bilder und Core Web Vitals

Wenn Sie responsive Bilder bereitstellen, werden die Displayfunktionen auf Ihrer Seite bewertet des Geräts des Nutzers und eine Auswahl aus einer Reihe von Bildkandidaten, die basierend auf diesen Kriterien optimal für die Anzeige ist. So werden Daten für Ihre Nutzenden gespeichert, hauptsächlich dadurch, dass sie kleinere Bilder an Geräte mit kleineren Bildschirmen liefern.

Ein schnelleres Laden von Bildern kann sich auch auf die Largest Contentful Paint (LCP): Wenn zum Beispiel die Das LCP-Element ist ein Bild, das und kann entsprechend die Ladedauer der Ressourcen verkürzen.

Eine kürzere Ladezeit von Ressourcen verkürzt die Ladezeit für ein LCP-Bild und verbessert den LCP-Wert einer Seite. Ein niedrigerer LCP bedeutet, dass Ihre Website schneller geladen wird, vor allem, weil die wichtigsten Inhalte (das LCP-Element) schneller geladen werden. Durch die Bereitstellung responsiver Bilder lassen sich auch Bandbreitenkonflikte für andere auf der Seite. Dadurch lässt sich die Ladegeschwindigkeit der Seite verbessern.

Bildgröße anpassen

Zwei der beliebtesten Tools zur Größenanpassung von Bildern sind das sharp-npm-Paket. und das ImageMagick-Befehlszeilentool.

Das Paket „schärfe“ ist eine gute Wahl für die automatische Größenanpassung von Bildern (z. B. Generieren von Miniaturansichten in verschiedenen Größen für alle Videos auf Ihrer Website). Es ist schnell und lässt sich gut in Build-Scripts und -Tools einbinden. ImageMagick ist mehr ist bequem für die einmalige Änderung der Bildgröße, da das Bild vollständig über den Befehl ausgeführt wird. Zeile.

scharf

Um scharf als Node-Skript zu verwenden, speichern Sie diesen Code als separates Skript in Ihrem und führen Sie es aus, um Ihre Images zu konvertieren:

const sharp = require('sharp');
const fs = require('fs');
const directory = './images';

fs.readdirSync(directory).forEach(file => {
  sharp(`${directory}/${file}`)
    .resize(200, 100) // width, height
    .toFile(`${directory}/${file}-small.jpg`);
  });

ImageMagick

Um die Größe eines Bildes auf 33% seiner Originalgröße zu ändern, führen Sie den folgenden Befehl in Ihrem Terminal:

convert -resize 33% flower.jpg flower-small.jpg

Wenn Sie die Größe eines Bildes so ändern möchten, dass es in einen Bereich von 300 x 200 Pixel passt, führen Sie den folgenden Befehl:

# macOS/Linux
convert flower.jpg -resize 300x200 flower-small.jpg

# Windows
magick convert flower.jpg -resize 300x200 flower-small.jpg

Wie viele Image-Versionen sollten Sie erstellen?

Es gibt nicht nur eine einzige „richtige“ Antwort auf diese Frage. Es ist jedoch üblich, 3 bis 5 verschiedene Größen eines Bildes liefern. Die Bereitstellung von mehr Bildgrößen ist für benötigt allerdings mehr Speicherplatz auf Ihren Servern und etwas mehr HTML-Code.

Sonstige Optionen

Bilddienste wie Thumbor (Open Source) und Cloudinary sind ebenfalls einen Besuch wert. Beide sind einfache Möglichkeiten zum Erstellen responsiver Bilder, die auch Bilder enthalten bei Bedarf anpassen. Installieren Sie Thumbor auf Ihrem Server, um Thumbor einzurichten. Cloudinary kümmert sich um die Details für Sie und erfordert keine Servereinrichtung.

Mehrere Image-Versionen bereitstellen

Wenn Sie mehrere Image-Versionen angeben, wählt der Browser die beste Version aus. verwenden:

Vorher Nachher
<img src="blume-große.jpg"> <img src="große-blumen.jpg" srcset="flower-small.jpg 480w, Blume-groß.jpg 1080w" size="50vw">

Das <img>-Tag src, srcset, und sizes alle Attribute interagieren, um dieses Endergebnis zu erreichen.

Das „src“-Attribut Attribut

Das Attribut "src" sorgt dafür, dass dieser Code für Browser funktioniert, die keine srcset und sizes unterstützen Attribute. Diese Browser laden standardmäßig die Ressource, die im Attribut „src“.

Das „srcset“ Attribut

Das Attribut srcset ist eine durch Kommas getrennte Liste von Bilddateinamen und ihren Beschreibungen für die Breite oder Dichte.

In diesem Beispiel wird Breitenbeschreibungen Diese teilen dem Browser mit, wie breit ein Bild ist, damit er das Bild nicht herunterladen muss um es herauszufinden. 480w ist ein Breitendeskriptor, der dem Browser mitteilt, flower-small.jpg ist 480 Pixel breit. 1080w ist ein Breitendeskriptor, der dem mit einer Breite von 1080 Pixeln von flower-large.jpg.

Zusätzlicher Schritt: Sie müssen nichts über Dichtedeskriptoren wissen, um verschiedene Bildgrößen bereitzustellen. Wenn Sie jedoch wissen möchten, wie Dichtedeskriptoren funktionieren, lesen Sie Lösung: Code-Lab für einen Wechsel Kompaktheitsbeschreibungen werden verwendet, um verschiedene Bilder basierend auf dem Pixeldichte:

Das Feld „Größen“ Attribut

Das Größenattribut teilt dem Browser mit, wie breit das Bild bei der angezeigt, obwohl dies keinen Einfluss auf die Anzeigegröße des Bildes hat. CSS dafür.

Der Browser verwendet diese Informationen zusammen mit dem, was er über die Gerät (einschließlich der Abmessungen und der Pixeldichte), um zu bestimmen, welches Bild laden.

Wenn ein Browser "sizes" nicht erkennt des Attributs verwendet wird, das mit „src“ angegebene Bild wird geladen . (sizes und srcset) wurden zeitgleich eingeführt, daher unterstützt jeder Browser entweder beide oder keines von beidem.

Zusätzlicher Schritt: Wenn Sie es lieber elegant gestalten möchten, können Sie für mehrere Anzeigenflächengrößen. So können auch Websites mit unterschiedlichen Layouts für Darstellungsbereiche. Codebeispiel für mehrere Anzeigenflächen um zu erfahren, wie das geht.

(Noch mehr) Extra Credit

Zusätzlich zu den bereits aufgeführten zusätzlichen Informationen (Bilder sind komplex!), können Sie dieselben Konzepte Art Direction. Art Direction ist das Verfahren, komplett anders aussehende Bilder bereitzustellen. (anstelle verschiedener Versionen desselben Bildes) für verschiedene Darstellungsbereiche. Ich findest du im Art Direction Code Lab weitere Informationen.

Bestätigen

Mit Lighthouse können Sie nach der Implementierung responsiver Bilder keine Bilder verpasst. Lighthouse-Leistungsüberprüfung durchführen (Lighthouse > Optionen > Leistung) und suchen Sie nach den Ergebnissen der Prüfung der richtigen Größe von Images: In diesen Ergebnissen sehen Sie die Bilder, die Sie noch benötigen. die Größe anpassen.