<iframe>
Ramka, która osadza na stronie inny dokument HTML, na przykład film z YouTube albo mapę.
- Wyświetlanie
- inline (element zastępowany)
- Znacznik zamykający
- Wymagany
- Dozwolona zawartość
- Brak (treść między znacznikami jest ignorowana)
Przykład
#<iframe
title="Wizytówka Ani"
width="320"
height="140"
srcdoc="<h1 style='font: 700 22px system-ui; margin: 0 0 8px'>Ania Kowalska</h1><p style='font: 15px system-ui; margin: 0'>Uczę się HTML i CSS. To moja pierwsza strona!</p>"
></iframe>Definicja i zastosowanie
#Element <iframe> (od inline frame) wyświetla wewnątrz strony zupełnie osobny dokument, z własnym HTML, CSS i JavaScriptem. W ten sposób osadza się odtwarzacze z YouTube i Vimeo, mapy, formularze płatności czy widżety czatu. Adres dokumentu podajesz w src, a krótki kod HTML możesz też wpisać wprost w atrybut srcdoc.
Treść ramki jest odizolowana od Twojej strony: style się nie mieszają, a skrypty z innej domeny nie mają dostępu do Twojego DOM. Wiele serwisów w ogóle nie pozwala osadzać swoich stron w ramkach i blokuje to nagłówkami odpowiedzi, dlatego nie każdą stronę da się wyświetlić w <iframe>.
Każda ramka powinna mieć atrybut title opisujący jej zawartość, na przykład „Mapa dojazdu do biura”. Czytnik ekranu odczyta go, zanim użytkownik wejdzie do ramki. Ramki poniżej pierwszego ekranu warto ładować leniwie przez loading="lazy".
Składnia
#<iframe src="adres" title="Opis zawartości" width="…" height="…"></iframe>Atrybuty
#src
URL
Adres dokumentu wyświetlanego w ramce. Serwisy takie jak YouTube czy Mapy Google udostępniają gotowy kod<iframe>z właściwym adresem w opcji „Udostępnij”, a potem „Umieść”.kod HTML
Kod HTML, który ramka wyświetli zamiast pobierać stronę z adresu. Ma pierwszeństwo przedsrc. Cudzysłowy wewnątrz kodu zapisuj jako pojedyncze cudzysłowy albo encje", żeby nie zamknąć wartości atrybutu.width / height
liczba pikseli
Wymiary ramki, domyślnie 300 na 150 pikseli. Treść, która się nie mieści, ramka przewija.pusty albo lista uprawnień, np. `allow-scripts allow-forms`
Uruchamia ramkę w piaskownicy z ograniczeniami. Pusty atrybut blokuje skrypty, formularze i wyskakujące okna, a treść traktuje jak pochodzącą z obcej domeny. Kolejne uprawnienia przywracasz słowami kluczowymi, na przykładallow-scriptsalboallow-forms. W przykładzie ten sam skrypt działa tylko w drugiej ramce.allow
lista uprawnień, np. `fullscreen; autoplay; clipboard-write`
Określa, z jakich funkcji przeglądarki może korzystać ramka: pełny ekran, autoodtwarzanie, kamera, mikrofon, schowek. Gotowe kody osadzania z YouTube zawierają już odpowiednią wartość. Starszy atrybutallowfullscreennadal działa, ale nowszy zapis toallow="fullscreen".loading
eager | lazy
lazywczytuje ramkę dopiero wtedy, gdy zbliży się ona do widocznej części strony. To duża oszczędność przy osadzonych filmach i mapach, które często ważą więcej niż cała reszta strony.name
tekst
Nazwa ramki. Link z atrybutemtarget="nazwa"otworzy swój adres właśnie w tej ramce.referrerpolicy
no-referrer | origin | strict-origin-when-cross-origin | …
Decyduje, ile informacji o Twojej stronie trafi do osadzanego serwisu w nagłówkuReferer.
Element obsługuje też wszystkie atrybuty globalne, takie jak class, id, style czy hidden.
Atrybuty w praktyce
#srcdoc
kod HTMLKod HTML, który ramka wyświetli zamiast pobierać stronę z adresu. Ma pierwszeństwo przed src. Cudzysłowy wewnątrz kodu zapisuj jako pojedyncze cudzysłowy albo encje ", żeby nie zamknąć wartości atrybutu.
<iframe
title="Podgląd przycisku"
width="260"
height="80"
srcdoc="<button style='font: 16px system-ui; padding: 8px 16px'>Zapisz się</button>"
></iframe>sandbox
pusty albo lista uprawnień, np. `allow-scripts allow-forms`Uruchamia ramkę w piaskownicy z ograniczeniami. Pusty atrybut blokuje skrypty, formularze i wyskakujące okna, a treść traktuje jak pochodzącą z obcej domeny. Kolejne uprawnienia przywracasz słowami kluczowymi, na przykład allow-scripts albo allow-forms. W przykładzie ten sam skrypt działa tylko w drugiej ramce.
<iframe
sandbox
title="Ramka bez uprawnień"
width="220"
height="70"
srcdoc="<p id='msg' style='font: 15px system-ui'>Skrypty zablokowane</p><script>document.getElementById('msg').textContent = 'Skrypt działa'</script>"
></iframe>
<iframe
sandbox="allow-scripts"
title="Ramka z uprawnieniem allow-scripts"
width="220"
height="70"
srcdoc="<p id='msg' style='font: 15px system-ui'>Skrypty zablokowane</p><script>document.getElementById('msg').textContent = 'Skrypt działa'</script>"
></iframe>Domyślny CSS
#Większość przeglądarek wyświetla ten element z takimi stylami domyślnymi:
iframe {
border: 2px inset;
}Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Ramka z innej strony wykonuje cudzy kod. Osadzaj tylko zaufane serwisy, a przy nieznanych dodaj
sandboxz minimalnym zestawem uprawnień. - Nie łącz
allow-scriptszallow-same-origindla treści z Twojej własnej domeny. Skrypt w ramce mógłby wtedy sam zdjąć ograniczenia piaskownicy. - Responsywną ramkę z filmem uzyskasz w CSS:
width: 100%; aspect-ratio: 16 / 9; border: 0;.
Powiązane hasła
#- <embed>Osadza w stronie zewnętrzny zasób, najczęściej dokument PDF.
- <object>Osadza zewnętrzny zasób (PDF, obraz, stronę) z treścią zastępczą na wypadek, gdyby się nie wczytał.
- <video>Odtwarzacz wideo osadzony bezpośrednio na stronie.
- <a>Odnośnik do innej strony, pliku, adresu e-mail albo miejsca na tej samej stronie.
Widzisz błąd albo brakuje przykładu? Napisz do nas.