CodeGym /Kurse /Frontend SELF DE /Retina-Grafik

Retina-Grafik

Frontend SELF DE
Level 26 , Lektion 0
Verfügbar

6.1 Verwendung des Attributs srcset und sizes

Bildschirme mit hoher Pixeldichte, wie die Retina-Displays von Apple, sind heute Standard für viele moderne Geräte. Diese Displays haben eine viel höhere Anzahl an Pixeln pro Zoll (PPI), was ein schärferes und detaillierteres Bild ermöglicht. Für Webentwickler ist es wichtig, die Grafiken für solche Bildschirme zu optimieren, um den Nutzern ein erstklassiges Erlebnis zu bieten. Schauen wir uns an, wie das geht.

Probleme mit Bildschirmen hoher Dichte

Auf Bildschirmen mit hoher Dichte können Standardbilder unscharf oder verpixelt wirken, da ein Bildpixel über mehrere Bildschirmpixel gestreckt wird. Um dieses Problem zu lösen, müssen Bilder mit höherer Auflösung verwendet werden, die dann vom Browser für die Darstellung auf einem Bildschirm mit hoher Dichte skaliert werden können.

Die Attribute srcset und sizes ermöglichen es, verschiedene Bildversionen für unterschiedliche Pixeldichten anzugeben. Dies hilft dem Browser, das geeignetste Bild für das jeweilige Gerät auszuwählen.

Beispiel für die Verwendung von srcset und sizes:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Optimierung für Retina-Displays</title>
        </head>
        <body>
          <img
            src="images/default.jpg"
            srcset="images/image-1x.jpg 1x,
              images/image-2x.jpg 2x,
              images/image-3x.jpg 3x"
            sizes="(max-width: 600px) 100vw,
              (max-width: 1200px) 50vw, 33vw"
            alt="Beispielbild für Retina-Displays">
        </body>
      </html>
    
  

Code-Erklärung:

  • srcset: gibt drei Bildversionen für unterschiedliche Pixeldichten an (1x, 2x, 3x)
  • sizes: definiert die Bildbreite für unterschiedliche Anzeigeumgebungen:
    • Bis 600px — das Bild nimmt 100% der Viewport-Breite ein
    • Bis 1200px — das Bild nimmt 50% der Viewport-Breite ein
    • In allen anderen Fällen — das Bild nimmt 33% der Viewport-Breite ein

6.2 Verwendung von Vektorgrafiken (SVG)

Vektorgrafiken (SVG) sind eine ausgezeichnete Lösung für Bildschirme mit hoher Dichte, da SVG-Dateien ohne Qualitätsverlust skaliert werden können. Sie sind ideal für Logos, Icons und andere UI-Elemente.

Beispiel für die Verwendung von SVG:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Verwendung von SVG für Retina-Displays</title>
        </head>
        <body>
          <img src="images/logo.svg" alt="Logo">
        </body>
      </html>
    
  

Code-Erklärung:

  • src="images/logo.svg": gibt den Pfad zur SVG-Datei an, die auf jede Größe skaliert werden kann, ohne an Qualität zu verlieren

6.3 Verwendung von CSS

Für Hintergrundbilder kann man Media Queries und CSS-Eigenschaften verwenden, um je nach Pixeldichte des Geräts unterschiedliche Bildversionen zu laden.

Beispiel für die Verwendung von CSS für Hintergrundbilder:

CSS
    
      .background {
        background-image: url('images/background-1x.jpg');
      }

      @media only screen and (min-resolution: 2dppx) {
        .background {
          background-image: url('images/background-2x.jpg');
        }
      }

      @media only screen and (min-resolution: 3dppx) {
        .background {
          background-image: url('images/background-3x.jpg');
        }
      }
    
  

Code-Erklärung:

  • .background: definiert das Standard-Hintergrundbild
  • @media only screen and (min-resolution: 2dppx): ersetzt das Hintergrundbild durch eine Version für Bildschirme mit 2x Dichte
  • @media only screen and (min-resolution: 3dppx): ersetzt das Hintergrundbild durch eine Version für Bildschirme mit 3x Dichte

6.4 Das picture-Element

Der <picture>-Tag erlaubt es, mehrere Bildquellen mit unterschiedlichen Anzeigebedingungen anzugeben. Das ist nützlich bei komplexeren Fällen der Bildanpassung.

Beispiel für die Verwendung von <picture>:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Verwendung von <picture> für Retina-Displays</title>
        </head>
        <body>
          <picture>
            <source srcset="images/image-3x.jpg" media="(min-resolution: 3dppx)">
            <source srcset="images/image-2x.jpg" media="(min-resolution: 2dppx)">
            <img src="images/image-1x.jpg" alt="Beispielbild für Retina-Displays">
          </picture>
        </body>
      </html>
    
  

Code-Erklärung:

  • <source>: gibt verschiedene Bildquellen mit Anzeigebedingungen an
  • <img>: legt das Standardbild für Geräte fest, die <picture> nicht unterstützen

6.5 Beispiele zur Bildoptimierung

Beispiel 1: Adaptives Bild mit hoher Auflösung

Erstellen wir ein Beispiel, bei dem das Bild für Bildschirme hoher Dichte mit den Attributen srcset und sizes optimiert ist:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Adaptives Bild für Retina-Displays</title>
        </head>
        <body>
          <img
            src="images/default.jpg"
            srcset="images/image-1x.jpg 1x,
              images/image-2x.jpg 2x,
              images/image-3x.jpg 3x"
            sizes="(max-width: 600px) 100vw,
              (max-width: 1200px) 50vw, 33vw"
            alt="Beispielbild für Retina-Displays">
        </body>
      </html>
    
  

Code-Erklärung:

  • srcset: definiert drei Bildversionen für unterschiedliche Pixeldichten (1x, 2x, 3x)
  • sizes: definiert die Bildbreite für unterschiedliche Anzeigeumgebungen:
    • Bis 600px — das Bild nimmt 100% der Viewport-Breite ein
    • Bis 1200px — das Bild nimmt 50% der Viewport-Breite ein
    • In allen anderen Fällen — das Bild nimmt 33% der Viewport-Breite ein

Beispiel 2: Verwendung von SVG für skalierbare Bilder

Erstellen wir ein Beispiel, in dem SVG verwendet wird, um eine hochwertige Darstellung auf jedem Gerät zu gewährleisten:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Verwendung von SVG für Retina-Displays</title>
        </head>
        <body>
          <img src="images/logo.svg" alt="Logo">
        </body>
      </html>
    
  

Code-Erklärung:

  • src="images/logo.svg": gibt den Pfad zur SVG-Datei an, die auf jede Größe skaliert werden kann, ohne an Qualität zu verlieren
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION