HTML Bilder
Bilder bringen Leben auf deine Webseite. Hier erfährst du alles Wichtige über Formate, Einbindung, Alt-Texte, Hintergrundbilder, responsive Darstellung, Float, Caption und Performance-Tipps.
Bilder in HTML
Bilder sind ein zentrales Gestaltungselement auf Webseiten. Sie können zur Illustration, als
Designelement oder zur visuellen Unterstützung von Inhalten dienen. HTML bietet mehrere
Möglichkeiten, um Bilder einzubinden und zu steuern - vom klassischen
<img>
-Tag bis hin zu CSS-Hintergrundbildern.
Das
<img>
-Element
Das Standard-HTML-Tag für Bilder ist
<img>
(image). Es wird ohne schließendes Tag geschrieben und benötigt mindestens das Attribut
src
(source / Bildquelle) und
alt
(alternativer Text).
<img src="katze.jpg" alt="Eine schlafende Katze">
-
src- Bilddatei oder URL. -
alt- angezeigt, wenn Bild nicht geladen wird; wichtig für Screenreader. -
title- Tooltip beim Mouseover (optional). -
width/height- Größe in Pixeln oder Prozent (optional, besser per CSS).
Bildformate und Einsatzbereiche
Die Wahl des richtigen Formats hängt vom Bildinhalt, Transparenzbedarf und gewünschter Qualität ab.
| Format | Typ | Eigenschaften | Empfohlene Verwendung |
|---|---|---|---|
JPG / JPEG |
Raster | Verlustbehaftet, gute Kompression, keine Transparenz | Fotos, realistische Motive |
PNG |
Raster | Verlustfrei, unterstützt Transparenz | Grafiken, Logos, Screenshots |
GIF |
Raster | 256 Farben, einfache Animationen | Kleine Animationen, Icons |
WEBP |
Raster | Gute Kompression, Transparenz und Animation möglich | Allround-Format für moderne Websites |
SVG |
Vektor | Skalierbar, keine Qualitätsverluste | Logos, Icons, Illustrationen |
AVIF |
Raster | Hohe Kompression, moderne Alternative zu WebP | Fotos und komplexe Grafiken |
Responsive Bilder & unterschiedliche Formate
Bilder sollten auf allen Geräten gut aussehen. Die einfachste Lösung:
<style>
img {
max-width: 100%;
height: auto;
}
</style>
Manchmal möchtest du unterschiedliche Bildformate oder -größen abhängig vom Gerät oder
Browser nutzen. Moderne Browser unterstützen Formate wie
WebP
oder
AVIF
, die kleiner und schneller laden als klassische
JPG
oder
PNG
. Für Browser, die diese Formate nicht kennen, solltest du immer ein Fallback-Bild angeben.
Das erreichst du mit dem
<picture>
-Element:
<picture>
<source srcset="bild.avif" type="image/avif">
<source srcset="bild.webp" type="image/webp">
<img src="bild.jpg" alt="Beispielbild">
</picture>
-
<picture>erlaubt es, unterschiedliche Bildquellen zu definieren. -
<source>bestimmt, welche Datei bei welchem Format oder Gerät geladen wird. -
Das
<img>-Tag am Ende dient als Fallback, falls der Browser kein modernes Format unterstützt. - So sparst du Ladezeit, Bandbreite und stellst sicher, dass alle Nutzer ein Bild sehen.
Du kannst zusätzlich
media
-Attribute verwenden, um Bilder für bestimmte Bildschirmgrößen zu laden:
<picture>
<source srcset="bild-klein.jpg" media="(max-width: 600px)">
<source srcset="bild-gross.jpg" media="(min-width: 601px)">
<img src="bild.jpg" alt="Beispielbild">
</picture>
So passt sich dein Bild an die Bildschirmgröße an und lädt jeweils die passende Variante.
srcset und sizes - Bilder für verschiedene Auflösungen
Neben dem
<picture>
-Element gibt es eine weitere Möglichkeit, responsive Bilder bereitzustellen: die Attribute
srcset
und
sizes
direkt am
<img>
-Tag.
srcset für verschiedene Pixeldichten (Retina)
Moderne Displays haben unterschiedliche Pixeldichten. Mit
srcset
kannst du hochauflösende Varianten für Retina-Displays bereitstellen:
<!-- Pixeldichte-Varianten (1x, 2x, 3x) -->
<img
src="logo.png"
srcset="logo.png 1x,
logo@2x.png 2x,
logo@3x.png 3x"
alt="Firmenlogo"
width="200"
height="100">
srcset mit Breiten-Deskriptoren
Für Content-Bilder, die ihre Größe je nach Viewport ändern, verwendest du
Breiten-Deskriptoren (
w
):
<img
src="bild-800.jpg"
srcset="bild-400.jpg 400w,
bild-800.jpg 800w,
bild-1200.jpg 1200w,
bild-1600.jpg 1600w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
800px"
alt="Landschaftsfoto">
Das
sizes
-Attribut teilt dem Browser mit, wie breit das Bild im Layout sein wird:
-
(max-width: 600px) 100vw- Bei Viewports bis 600px nimmt das Bild 100% der Breite ein -
(max-width: 1200px) 50vw- Bei Viewports bis 1200px nimmt es 50% ein -
800px- Standardfall: Das Bild ist 800px breit
Der Browser wählt dann automatisch die passende Bildgröße aus
srcset
.
Bilder mit Beschriftung -
figure
und
figcaption
Das
<figure>
-Element ist ein semantischer Container für Bilder, Diagramme, Code-Beispiele oder andere
Medien, die eine Beschriftung benötigen. Die Beschriftung wird mit
<figcaption>
hinzugefügt.
<figure>
<img src="see.jpg" alt="Blick über den See">
<figcaption>Ein ruhiger Morgen am See</figcaption>
</figure>
figure mit mehreren Bildern
Ein
<figure>
-Element kann auch mehrere Bilder enthalten:
<figure>
<img src="vorher.jpg" alt="Raum vor der Renovierung">
<img src="nachher.jpg" alt="Raum nach der Renovierung">
<figcaption>Vorher-Nachher-Vergleich der Wohnzimmer-Renovierung</figcaption>
</figure>
-
<figure>ist für eigenständige Inhalte gedacht, die vom Haupttext referenziert werden -
<figcaption>kann am Anfang oder Ende stehen -
Der
alt-Text beschreibt das Bild, diefigcaptiongibt Kontext - Screenreader lesen beides - vermeide Wiederholungen
Bilder als Hintergrund
<style>
.hero {
background-image: url('header-bg.jpg');
background-size: cover;
background-position: center;
}
</style>
Positionierung im Text
<style>
img.left {
float: left;
margin-right: 1em;
}
</style>
Text umfließt das Bild. Alternativ:
display: flex;
oder
grid
.
Alt-Texte und Barrierefreiheit
Das
alt
-Attribut ist eines der wichtigsten Attribute für Bilder. Es wird von Screenreadern
vorgelesen, erscheint wenn das Bild nicht lädt, und hilft Suchmaschinen beim Verstehen des
Bildinhalts.
Gute Alt-Texte schreiben
-
alt="Golden Retriever spielt mit Ball im Park" -
alt="Balkendiagramm: Umsatz 2024 nach Quartalen" -
alt="Screenshot: Einstellungen-Menü in Firefox"
-
alt="Bild"- Zu unspezifisch -
alt="hund.jpg"- Dateiname ist kein Alt-Text -
alt="Bild von einem Hund der im Park spielt und einen Ball fängt während die Sonne scheint..."- Zu lang
Wann ein leerer Alt-Text sinnvoll ist
Dekorative Bilder, die keine Information vermitteln, erhalten einen leeren Alt-Text. So überspringen Screenreader sie:
<!-- Dekoratives Trennelement -->
<img src="divider.svg" alt="">
<!-- Icon neben Text (Text erklärt bereits) -->
<button>
<img src="search-icon.svg" alt="">
Suchen
</button>
<!-- Hintergrundbild als CSS ist besser -->
Niemals
das
alt
-Attribut weglassen! Ein fehlendes
alt
ist nicht das Gleiche wie
alt=""
. Ohne Attribut lesen manche Screenreader den Dateinamen vor.
Performance-Optimierung für Bilder
Bilder sind oft der größte Anteil am Seitengewicht. Mit ein paar Techniken kannst du die Ladezeit drastisch verbessern.
Lazy Loading - Bilder erst bei Bedarf laden
Mit
loading="lazy"
werden Bilder erst geladen, wenn sie in den sichtbaren Bereich scrollen:
<!-- Lazy Loading für Bilder unterhalb des sichtbaren Bereichs -->
<img
src="bild.jpg"
alt="Beispielbild"
loading="lazy"
width="800"
height="600">
<!-- Hero-Bilder sollten NICHT lazy sein -->
<img
src="hero.jpg"
alt="Hero Banner"
loading="eager">
Width und Height gegen Layout-Shifts
Gib immer
width
und
height
an - so reserviert der Browser Platz und verhindert Layoutsprünge (CLS):
<!-- Mit Dimensionen - Browser reserviert Platz -->
<img
src="foto.jpg"
alt="Produktfoto"
width="400"
height="300"
loading="lazy">
<!-- CSS macht es trotzdem responsiv -->
<style>
img {
max-width: 100%;
height: auto;
}
</style>
fetchpriority für wichtige Bilder
Das
fetchpriority
-Attribut teilt dem Browser mit, welche Bilder priorisiert geladen werden sollen:
<!-- LCP-Bild (Largest Contentful Paint) priorisieren -->
<img
src="hero-banner.jpg"
alt="Willkommen auf unserer Seite"
fetchpriority="high">
<!-- Unwichtige Bilder herabstufen -->
<img
src="decoration.jpg"
alt=""
fetchpriority="low"
loading="lazy">
decoding="async" für flüssiges Rendering
Mit
decoding="async"
blockiert das Dekodieren des Bildes nicht das Rendering der Seite:
<img
src="grosses-bild.jpg"
alt="Hochauflösendes Foto"
decoding="async"
loading="lazy">
- Moderne Formate nutzen (WebP, AVIF mit Fallback)
- Bilder komprimieren (TinyPNG, Squoosh, ImageOptim)
-
loading="lazy"für Bilder below the fold -
widthundheightimmer angeben -
fetchpriority="high"für Hero/LCP-Bilder - Bilder in passender Größe ausliefern (nicht 4000px für 400px-Anzeige)
Häufige Fehler bei HTML-Bildern
- Alt-Attribut weglassen
- Riesige Bilder ohne Kompression
- Keine width/height → Layout-Shifts
-
Alle Bilder mit
loading="lazy"(auch Hero) - Nur JPG für alles verwenden
- Absolute URLs zu externen Bildern
-
Immer
altangeben (leer für Deko) - Bilder optimieren und komprimieren
- width/height für Platzreservierung
-
Hero:
loading="eager"+fetchpriority="high" - Format nach Inhalt wählen (WebP, SVG)
- Bilder lokal hosten für Kontrolle
Teste es selbst
Wende das Gelernte direkt an - probiere den Code aus dem Tutorial aus oder experimentiere mit eigenen Ideen.
Editor öffnen
Mehr aus HTML
Tutorials werden geladen...