Lección: Iframes y multimedia
En esta lección aprenderás a incrustar contenido externo, como vídeos
de YouTube o mapas de Google, usando la etiqueta
<iframe>
. También conocerás brevemente
<video>
y <audio>
para multimedia
propia, como un vídeo grabado por ti. Antes, los frames
(<frameset>
) dividían la ventana del navegador en
partes, pero están obsoletos. Hoy, <iframe>
es la
herramienta moderna, sencilla, y poderosa para integrar recursos de
otras webs. Verás cómo usarla, personalizarla con CSS, y evitar
problemas como carga lenta. Esta lección conecta con rutas (URLs en
<iframe>
), imágenes (atributos similares), y
semánticas (dónde colocar <iframe>
).
¿Qué son los iframes?
Un iframe (inline frame) es una ventana dentro de tu
página que muestra contenido de otra fuente, como un vídeo, un mapa, o
una página web. A diferencia de los antiguos frames, que dividían toda
la ventana, un <iframe>
es un elemento flexible que
puedes colocar en cualquier parte de <body>
. Ejemplos
comunes:
- Un vídeo de YouTube en un blog.
- Un mapa de Google Maps en una página de contacto.
- Un widget de Twitter mostrando tuits.
Ventajas:
- Integra contenido externo sin programarlo.
- Mejora la experiencia del usuario (vídeos, mapas interactivos).
Desventajas:
- Puede ralentizar la carga si el contenido externo es pesado.
- Requiere cuidado con seguridad y accesibilidad.
La etiqueta <iframe>
La etiqueta <iframe>
incrusta contenido externo
usando una URL en el atributo src
. Es un elemento de
bloque, como <div>
, y puede estilizarse con CSS.
Atributos principales:
src
: URL del contenido (absoluta o relativa).width
,height
: Tamaño en píxeles o porcentaje (por ejemplo,width="100%"
).title
: Descripción para accesibilidad (lectores de pantalla).allow
: Permisos para funciones como pantalla completa o cámara (por ejemplo,allow="fullscreen"
).sandbox
: Restricciones de seguridad (por ejemplo,sandbox="allow-scripts"
).loading
: Carga diferida (loading="lazy"
) para mejorar rendimiento.allowfullscreen
: Permite pantalla completa (para vídeos).
Ejemplo 1: Vídeo de YouTube
Para incrustar un vídeo de YouTube, copia el código de "Compartir" → "Incrustar" desde YouTube.
Ejemplo:
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="Vídeo de YouTube" allowfullscreen></iframe>
Resultado: Un reproductor de YouTube en tu página.
Ejemplo 2: Mapa de Google Maps
Copia el código de "Compartir" → "Incrustar un mapa" desde Google Maps.
Ejemplo:
<iframe width="600" height="450" src="https://maps.google.com/maps?q=London&output=embed" title="Mapa de Londres" loading="lazy"></iframe>
Resultado: Un mapa interactivo de Londres.
Ejemplo 3: Página web
Puedes incrustar otra página web, aunque algunas (como Google) bloquean esto por seguridad.
Ejemplo:
<iframe src="https://ignit.net" width="100%" height="400" title="Sitio ignit.net"></iframe>
Nota: Verifica que el sitio permita incrustarse (puede fallar por restricciones).
Personalizar con CSS
Usa style
para bordes, márgenes, o responsividad.
Ejemplo con CSS:
<iframe style="border: 2px solid #333; margin: 10px;" width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="Vídeo de YouTube" allowfullscreen></iframe>
Multimedia con <video> y <audio>
Si tienes tus propios vídeos o audios (por ejemplo, un tutorial
grabado), usa <video>
o <audio>
en
lugar de <iframe>
. Estas etiquetas de HTML5 son más
ligeras y no dependen de servicios externos.
<video>: Vídeos propios
Muestra un vídeo alojado en tu servidor.
Atributos:
src
: Ruta al vídeo.controls
: Muestra controles (play, pausa).width
,height
: Tamaño.poster
: Imagen previa.
Ejemplo:
<video width="320" height="240" controls>
<source src="mi_video.mp4" type="video/mp4">
Tu navegador no soporta vídeos.
</video>
<audio>: Audios propios
Reproduce un archivo de audio.
Atributos:
src
: Ruta al audio.controls
: Controles (play, pausa).
Ejemplo:
<audio controls>
<source src="mi_audio.mp3" type="audio/mpeg">
Tu navegador no soporta audios.
</audio>
Nota: <source>
permite múltiples
formatos (MP4, WebM) para compatibilidad. Conecta con la lección de
rutas para src
.
Por qué <iframe> reemplazó a <frameset>?
Antes de HTML5, los frames (<frameset>
, <frame>
) dividían la
ventana del navegador en partes, cada una con un documento HTML. Por ejemplo:
<frameset cols="20%,80%">
<frame src="menu.html">
<frame src="contenido.html">
</frameset>
Problemas de <frameset>
:
- Carga lenta (múltiples documentos).
- Mala accesibilidad (lectores de pantalla no los entendían bien).
- URLs confusas (difícil compartir una página específica).
- Obsoletos en HTML5: Reemplazados por
<iframe>
o CSS (Flexbox, Grid).
Ventajas de <iframe>
:
- Flexible: Se coloca en
<body>
como cualquier elemento. - Moderno: Soporta vídeos, mapas, y widgets.
- Controlable con CSS y atributos de seguridad (
sandbox
).
Nota: No uses <frameset>
ni
<frame>
; solo <iframe>
para
incrustar contenido.
Ejemplo completo
Aquí tienes una página con <iframe>
y
<video>
:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Iframes y multimedia - Ignside.net</title>
</head>
<body>
<header>
<h1>Mi página multimedia</h1>
</header>
<main>
<section>
<h2>Vídeo de YouTube</h2>
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="Vídeo de YouTube" style="border: 2px solid #333;" allowfullscreen></iframe>
</section>
<section>
<h2>Mapa de Londres</h2>
<iframe width="600" height="450" src="https://maps.google.com/maps?q=London&output=embed" title="Mapa de Londres" loading="lazy"></iframe>
</section>
<section>
<h2>Mi vídeo</h2>
<video width="320" height="240" controls>
<source src="mi_video.mp4" type="video/mp4">
Tu navegador no soporta vídeos.
</video>
</section>
</main>
<footer>
<p>© 2025 ignit.net</p>
</footer>
</body>
</html>
Instrucciones:
- Guarda como
iframes_multimedia.html
en UTF-8 (en VS Code: "Archivo" → "Guardar como" → selecciona UTF-8). - Reemplaza
mi_video.mp4
con un archivo real o elimina la sección<video>
si no tienes uno. - Abre en un navegador para verificar el vídeo de YouTube y el mapa.
- Sube al servidor en modo binario.
Consejos para evitar problemas
- Usa UTF-8: Declara
<meta charset="UTF-8">
para caracteres comoé
(por ejemplo, Pérez). - Añade
title
: Incluyetitle
en<iframe>
para accesibilidad (lectores de pantalla). - Prueba URLs: Verifica que el
src
de<iframe>
funcione (algunos sitios bloquean incrustaciones). - Usa
loading="lazy"
: Mejora la carga en<iframe>
con contenido pesado. - Evita
<frameset>
: Está obsoleto; usa<iframe>
o CSS para diseños. - Seguridad con
sandbox
: Aplicasandbox
en<iframe>
para contenido no confiable. - Prueba en móviles: Usa
<meta name="viewport">
(lección de cabeceras) para que<iframe>
sea responsivo.