<picture>: Das Picture-Element

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.

Das <picture>HTML-Element enthält null oder mehr <source>-Elemente und ein <img>-Element, um alternative Versionen eines Bildes für verschiedene Anzeige-/Geräteszenarien anzubieten.

Der Browser wird jedes <source>-Kindelement betrachten und die am besten passende Option unter ihnen auswählen. Wenn keine Übereinstimmungen gefunden werden oder der Browser das <picture>-Element nicht unterstützt, wird die URL des src-Attributs des <img>-Elements ausgewählt. Das ausgewählte Bild wird dann in dem vom <img>-Element eingenommenen Bereich dargestellt.

Probieren Sie es aus

Um zu entscheiden, welche URL geladen werden soll, überprüft der User-Agent die Attribute srcset, media und type jedes <source>, um ein kompatibles Bild auszuwählen, das am besten zum aktuellen Layout und den Fähigkeiten des Anzeigegeräts passt.

Das <img>-Element erfüllt zwei Zwecke:

  1. Es beschreibt die Größe und andere Attribute des Bildes und dessen Darstellung.
  2. Es bietet eine Fallback-Option, falls keines der angebotenen <source>-Elemente ein nutzbares Bild liefert.

Häufige Anwendungsfälle für <picture>:

  • Art Direction. Zuschneiden oder Modifizieren von Bildern für verschiedene media-Bedingungen (z. B. Laden einer einfacheren Version eines Bildes, das zu viele Details auf kleineren Anzeigen hat).

  • Anbieten alternativer Bildformate, für Fälle, in denen bestimmte Formate nicht unterstützt werden.

    Hinweis: Beispielsweise haben neuere Formate wie AVIF oder WEBP viele Vorteile, werden aber möglicherweise vom Browser nicht unterstützt. Eine Liste der unterstützten Bildformate finden Sie unter: Leitfaden zu Bilddateitypen und -formaten.

  • Sparen von Bandbreite und Beschleunigung der Ladezeiten von Seiten durch das Laden des am besten geeigneten Bildes für das Display des Betrachters.

Wenn Sie höher aufgelöste Versionen eines Bildes für hochauflösende (Retina-)Displays bereitstellen, verwenden Sie srcset auf dem <img>-Element. Dies ermöglicht es Browsern, in datensparenden Modi auf niedrigere Auflösungen zurückzugreifen, ohne dass explizite media-Bedingungen erstellt werden müssen.

Attribute

Dieses Element umfasst nur globale Attribute.

Verwendungshinweise

Sie können die Eigenschaft object-position verwenden, um die Positionierung des Bildes innerhalb des Rahmens des Elements anzupassen, und die Eigenschaft object-fit, um zu steuern, wie das Bild in den Rahmen eingepasst wird.

Hinweis: Verwenden Sie diese Eigenschaften auf dem Kind-<img>-Element, nicht auf dem <picture>-Element.

Beispiele

Diese Beispiele veranschaulichen, wie verschiedene Attribute des <source>-Elements die Auswahl des Bildes innerhalb von <picture> beeinflussen.

Das Medien-Attribut

Das media-Attribut spezifiziert eine Medienbedingung (ähnlich einer Medienabfrage), die der User-Agent für jedes <source>-Element auswertet.

Wenn die Medienbedingung des <source> als false bewertet wird, überspringt der Browser es und bewertet das nächste Element innerhalb von <picture>.

html
<picture>
  <source srcset="mdn-logo-wide.png" media="(min-width: 600px)" />
  <img src="mdn-logo-narrow.png" alt="MDN" />
</picture>

Das srcset-Attribut

Das srcset-Attribut wird verwendet, um eine Liste möglicher Bilder basierend auf Größe oder Pixeldichte des Displays anzubieten.

Es besteht aus einer durch Kommas getrennten Liste von Bildbeschreibungen. Jede Bildbeschreibung besteht aus einer URL des Bildes und entweder:

  • einem Breitenbeschreiber, gefolgt von einem w (wie z. B. 300w); ODER
  • einem Pixeldichte-Beschreiber, gefolgt von einem x (wie z. B. 2x), um ein hochauflösendes Bild für hochauflösende Bildschirme bereitzustellen.

Beachten Sie, dass:

  • Breiten- und Pixeldichte-Beschreiber nicht zusammen verwendet werden sollten
  • ein fehlender Pixeldichte-Beschreiber 1x impliziert
  • doppelte Beschreibungswerte nicht erlaubt sind (2x & 2x, 100w & 100w)

Das folgende Beispiel illustriert die Verwendung des srcset-Attributs mit dem <source>-Element, um ein hochauflösendes und ein Standardauflösungsbild zu spezifizieren:

html
<picture>
  <source srcset="logo.png, logo-1.5x.png 1.5x" />
  <img src="logo.png" alt="MDN Web Docs logo" height="320" width="320" />
</picture>

Das srcset-Attribut kann auch auf dem <img>-Element verwendet werden, ohne dass das <picture>-Element erforderlich ist. Das folgende Beispiel zeigt, wie das srcset-Attribut verwendet werden kann, um Standardauflösungs- und hochauflösende Bilder zu spezifizieren:

html
<img
  srcset="logo.png, logo-2x.png 2x"
  src="logo.png"
  height="320"
  width="320"
  alt="MDN Web Docs logo" />

Das sizes-Attribut ist nicht obligatorisch, wenn srcset verwendet wird, aber es wird empfohlen, es zu verwenden, um zusätzliche Informationen für den Browser bereitzustellen, die ihm helfen, die beste Bildquelle auszuwählen.

Ohne sizes verwendet der Browser die Standardgröße des Bildes entsprechend seiner Pixelabmessungen. Dies ist möglicherweise nicht die beste Option für alle Geräte, insbesondere wenn das Bild auf verschiedenen Bildschirmgrößen oder in verschiedenen Kontexten angezeigt wird.

Bitte beachten Sie, dass sizes nur dann Wirkung hat, wenn statt Pixelverhältniswerten Breitenbeschreibungen mit srcset bereitgestellt werden (zum Beispiel 200w anstelle von 2x). Für weitere Informationen zur Verwendung von srcset siehe die Anleitung zu responsiven Bildern.

Das Typ-Attribut

Das type-Attribut spezifiziert einen MIME-Typ für die Ressourcen-URL(s) im srcset-Attribut des <source>-Elements. Wenn der User-Agent den angegebenen Typ nicht unterstützt, wird das <source>-Element übersprungen.

html
<picture>
  <source srcset="photo.avif" type="image/avif" />
  <source srcset="photo.webp" type="image/webp" />
  <img src="photo.jpg" alt="photo" />
</picture>

Technische Zusammenfassung

Inhaltskategorien Flussinhalt, Phrasierungsinhalt, eingebetteter Inhalt
Erlaubter Inhalt Null oder mehr <source>-Elemente, gefolgt von einem <img>-Element, optional gemischt mit skript-unterstützenden Elementen.
Tag-Auslassung Keine, sowohl Start- als auch End-Tag sind obligatorisch.
Erlaubte Eltern Jedes Element, das eingebetteten Inhalt erlaubt.
Implizierte ARIA-Rolle Keine entsprechende Rolle
Erlaubte ARIA-Rollen Kein role erlaubt
DOM-Schnittstelle [`HTMLPictureElement`](/de/docs/Web/API/HTMLPictureElement)

Spezifikationen

Specification
HTML Standard
# the-picture-element

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch