Imágenes responsive CSS
Las media queries cambiaron el layout al variar el viewport. Las imágenes son otro punto de tensión: un archivo de 4000px en una columna estrecha desborda, gasta ancho de banda o hace saltar la página al cargar. Esta lección cubre CSS fluido, reservar espacio y fuentes más inteligentes — sin repetir la sintaxis @media de la sesión anterior.
Kit de imágenes responsive
📊 Imágenes responsive de un vistazo
| Pieza | Trabajo habitual |
|---|---|
max-width: 100% + height: auto |
La imagen escala dentro de la columna; mantiene proporción |
width / height en <img> o aspect-ratio en CSS |
Reserva espacio; menos CLS al cargar |
srcset + sizes |
El navegador elige un archivo cercano al ancho renderizado |
<picture> + <source media> |
Art direction — recorte o asset distinto por condición |
object-fit + caja fija |
Recortar o letterbox en marco conocido (lección Object Fit) |
| Media queries en layout | Siguen moviendo columnas y nav — la imagen sigue el ancho del slot |
Dos capas: ancho de layout (contenedor, grid, media queries) y comportamiento de imagen (escala CSS + qué archivo descargar). Arregla el desbordamiento con CSS; añade srcset cuando el mismo visual necesite archivos más pequeños en móvil.
Imagen fluida — max-width y height: auto
El hábito clásico: que la imagen no supere su contenedor ni deforme la altura.
.article img {
max-width: 100%;
height: auto;
display: block;
}
Evita solo width: 100% en imágenes intrínsecas enormes sin max-width. Combina reglas fluidas con fuentes razonables o srcset para que el móvil no descargue JPEGs poster para un thumbnail.
Reservar espacio — dimensiones y aspect-ratio
Si el navegador conoce pronto ancho y alto, el contenido inferior no salta. En CSS moderno expresas la relación directamente.
.hero__photo {
width: 100%;
aspect-ratio: 16 / 9;
object-fit: cover;
display: block;
}
Para fotos de contenido que deben verse enteras, prefiere max-width fluido sin forzar cover. aspect-ratio + object-fit: cover cuando el diseño exige marco fijo — Object Fit profundiza; aquí reduces salto de layout manteniendo responsive.
Cambio de resolución — srcset y sizes
srcset lista candidatos; sizes indica cuán ancha se renderiza la imagen en el layout (no solo el viewport). El navegador elige — no escribes @media por cada ancho de PNG.
<img
src="photo-800.jpg"
srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1200.jpg 1200w"
sizes="(min-width: 48rem) 640px, 100vw"
alt="Team at a whiteboard"
width="800"
height="450"
/>
sizes honesto: ancho completo en móvil, mitad del contenedor en desktop si CSS lo hace. Hints falsos → archivos demasiado grandes o borrosos.
Art direction con <picture>
Cuando el recorte debe cambiar — hero vertical en móvil, banner ancho en desktop — anida <source> con media (o type) y un <img> fallback con alt.
<picture>
<source media="(max-width: 40rem)" srcset="hero-portrait.jpg" />
<source media="(min-width: 41rem)" srcset="hero-landscape.jpg" />
<img src="hero-landscape.jpg" alt="City skyline at dusk" width="1200" height="675" />
</picture>
Usa picture para art direction, no para cincuenta breakpoints duplicados. A menudo basta srcset si solo cambia resolución. Combínalo con CSS fluido arriba.
Marcos fijos — recordatorio object-fit
Fotos fluidas inline: max-width. Tarjetas con altura igual: caja medida + object-fit: cover — Object Fit es dueño de eso; no estires toda la galería con fill.
.card__thumb {
width: 100%;
height: 12rem;
object-fit: cover;
display: block;
}
Trabajar con media queries
Las queries siguen cambiando columnas y sidebar; las imágenes heredan el ancho del slot. Actualiza sizes cuando un breakpoint cambie el ancho renderizado. No reemplazas queries — alineas hints de imagen con el layout.
Pruébalo tú
<img>ancho en columna estrecha; corrige conmax-width: 100%yheight: auto.- Añade
width,heightoaspect-ratioen un hero y recarga. - Un
srcsetcon tres anchos ysizesrealista. - Un
<picture>con dos recortes estrecho vs ancho. - Thumb de altura fija con
object-fit: coveren grid de tarjetas.
Errores comunes
- Solo
srcenorme sinsrcset width: 100%sinheight: autoy fotos deformadassizes="100vw"siempre cuando CSS renderiza 320pxobject-fitsin caja limitada- Reenseñar sintaxis
@mediaaquí en vez de unir slot ysizes
Resumen
- CSS fluido (
max-width: 100%,height: auto) mantiene imágenes en columnas responsive - Reserva espacio con dimensiones o
aspect-ratio srcset/sizesoptimizan qué archivo;<picture>para art directionobject-fitpara marcos fijos, no por defecto en cada foto inline- Siguiente: Breakpoints — planificar queries en toda la página
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior