HTML iFrames
Ein iFrame (Inline Frame) ermöglicht es, eine andere Webseite oder Datei direkt in die eigene Seite einzubetten. So lassen sich z. B. YouTube-Videos, Google Maps oder eigene Unterseiten anzeigen, ohne die aktuelle Seite zu verlassen.
Was ist ein iFrame?
Das
<iframe>
-Element steht für „inline frame“. Es lädt eine andere HTML-Seite in einem kleinen Fenster
innerhalb deiner aktuellen Seite. Das kann ein externer Inhalt sein (z. B. YouTube oder eine
Karte), oder auch eine lokale Datei auf deinem Server.
<iframe src="seite.html" width="600" height="400">
</iframe>
Der Besucher sieht sozusagen ein „Fenster“ in eine andere Seite – mit eigenem Inhalt, eigenem Scrollverhalten und eigener Adresse.
Typische Einsatzmöglichkeiten
- Videos (z. B. YouTube oder Vimeo)
- Karten (z. B. Google Maps, OpenStreetMap)
- Interaktive Tools oder Formulare
- Inhalte von Partnerseiten (z. B. Widgets, externe Dashboards)
Beispiel: YouTube-Video einbetten
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="YouTube-Video-Player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media;
gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
Der
src
-Link wird hier direkt von YouTube bereitgestellt, wenn du ein Video über „Teilen →
Einbetten“ auswählst.
Wichtige Attribute
| Attribut | Bedeutung | Beispiel |
|---|---|---|
src |
URL oder Datei, die eingebettet wird | src="seite.html" |
width
/
height
|
Größe des Frames | width="600" |
title |
Beschreibung des Inhalts (für Barrierefreiheit wichtig!) | title="Produktübersicht" |
allowfullscreen |
Erlaubt Vollbildmodus (z. B. bei Videos) | – |
loading |
Steuert das Laden:
lazy
verzögert das Einfügen
|
loading="lazy" |
sandbox |
Erhöht die Sicherheit (siehe unten) | sandbox |
Responsives iFrame-Design
Standardmäßig haben iFrames feste Pixelgrößen. Damit sie auf mobilen Geräten mitwachsen, kannst du sie mit CSS flexibel gestalten:
<div class="video-wrapper">
<iframe src="https://www.youtube.com/embed/..."
title="Video" allowfullscreen></iframe>
</div>
.video-wrapper {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
height: 0;
}
.video-wrapper iframe {
position: absolute;
width: 100%;
height: 100%;
border: 0;
}
So bleibt dein eingebettetes Video oder Kartenfenster immer im richtigen Seitenverhältnis - unabhängig von der Bildschirmgröße.
Sicherheit mit
sandbox
Da iFrames fremde Inhalte laden, besteht ein Sicherheitsrisiko (z. B. durch bösartige
Skripte). Mit dem Attribut
sandbox
kannst du die Rechte stark einschränken:
<iframe src="seite.html" sandbox></iframe>
Ohne weitere Angaben verbietet
sandbox
fast alles (Skripte, Formulare, Popups usw.). Du kannst einzelne Rechte gezielt erlauben:
-
allow-scripts→ JavaScript im iFrame erlauben -
allow-forms→ Formularübertragungen erlauben -
allow-popups→ Popups aus dem iFrame zulassen -
allow-same-origin→ Zugriff auf Cookies/Daten derselben Domain
<iframe src="tool.html" sandbox="allow-scripts allow-forms"></iframe>
Barrierefreiheit bei iFrames
Screenreader erkennen den iFrame-Inhalt nicht automatisch. Deshalb ist ein beschreibendes
title
-Attribut wichtig, damit Nutzer*innen verstehen, was dort eingebettet ist.
<iframe src="https://karte.de" title="Interaktive Karte unserer Filialen"></iframe>
Außerdem sollte bei wichtigen Informationen ein alternativer Link oder eine Beschreibung außerhalb des iFrames vorhanden sein.
Tipps aus der Praxis
-
Nutze
loading="lazy"für bessere Performance. - Wenn möglich, lade keine externen Inhalte ohne DSGVO-Hinweis.
-
Bei YouTube-Videos: besser die „nocookie“-Variante verwenden
youtube-nocookie.com. - Vermeide verschachtelte iFrames – sie verlangsamen das Rendering erheblich.
iFrames sind praktisch, um externe Inhalte einzubetten - aber sie sollten mit Bedacht eingesetzt werden. Mit Sandbox, Lazy Loading und klaren Beschreibungen bleiben sie sicher, performant und barrierefrei.
Teste es selbst
Wende das Gelernte direkt an - probiere die Codes aus dem Tutorial aus oder experimentiere mit eigenen Ideen.
Editor öffnen
Mehr aus HTML
Tutorials werden geladen...