edubun
Español

Diseño adaptable con media queries

Sin una etiqueta meta, muchos celulares maquetan la página como si la pantalla fuera mucho más ancha (MDN da como ejemplo 980 píxeles) y luego la achican, así que una media query para celulares nunca se activa.

Una página, todas las pantallas

El diseño adaptable (responsive) consiste en construir una sola página que se adapte a la pantalla en la que aparezca, desde un celular angosto hasta un monitor ancho, en lugar de hacer un sitio móvil aparte. Se apoya en tres ideas: una maquetación hecha con anchos flexibles en lugar de fijos, contenidos multimedia que se escalan dentro de sus contenedores y media queries que ajustan la maquetación en los puntos donde deja de funcionar. Flexbox y grid ya hacen buena parte del trabajo, como mostraron las dos unidades anteriores con las tarjetas que pasan de línea y las columnas auto-fill.

La etiqueta meta viewport

Muchos celulares dibujan las páginas en una ventana gráfica virtual más ancha que la pantalla (MDN da como ejemplo 980 píxeles) y luego achican el resultado, porque los sitios antiguos se hicieron para computadoras de escritorio. En una página pensada para adaptarse, esto estorba: una media query que debería activarse por debajo de 600 píxeles nunca se activa, porque el navegador cree que la pantalla mide 980 píxeles de ancho. <meta name="viewport" content="width=device-width"> en el head le dice al navegador que use el ancho real del dispositivo, medido en píxeles CSS. Nunca agregues user-scalable=no ni un maximum-scale bajo; MDN advierte que bloquear el zoom deja fuera a las personas con baja visión, y WCAG 1.4.4 espera que el texto se pueda ampliar al 200 por ciento.

Anchos fluidos e imágenes

Los anchos fijos son la causa más común del desplazamiento lateral en los celulares. Prefiere max-width a width: max-width: 70rem en un contenedor de página le permite llenar una pantalla pequeña y dejar de crecer en una grande. Las imágenes conservan por defecto su tamaño natural en píxeles, así que una foto de 1200 píxeles se desborda de una pantalla de 390 píxeles. img { max-width: 100%; height: auto; } deja que las imágenes se encojan hasta caber en su contenedor sin perder sus proporciones. WCAG 1.4.10, Reflujo, pide que el contenido funcione con un ancho de 320 píxeles CSS sin desplazamiento en dos direcciones; revisar tu página en una ventana de 320 píxeles de ancho es un buen hábito.

Media queries

Una media query envuelve reglas que solo se aplican cuando una condición se cumple. @media (min-width: 600px) { ... } aplica sus reglas cuando la ventana gráfica mide al menos 600 píxeles de ancho. El enfoque habitual es primero el móvil (mobile first): escribe los estilos base para una pantalla angosta, que suelen ser los más sencillos (una columna, todo apilado), y luego agrega consultas min-width que reorganizan las cosas a medida que crece el espacio. Elige los puntos de corte donde tu contenido empieza a verse mal, no adivinando tamaños de dispositivos populares, porque cada año aparecen tamaños de pantalla nuevos. Escribir los puntos de corte en em, como 40em, también hace que respondan cuando un lector agranda el texto.

/* Base: one column for narrow screens */
.cols { display: grid; gap: 16px; }

/* From 600px: two columns */
@media (min-width: 600px) {
  .cols { grid-template-columns: 1fr 1fr; }
}

/* From 960px: a sidebar layout */
@media (min-width: 960px) {
  .cols { grid-template-columns: 240px 1fr 1fr; }
}
Primero el móvil: estilos base y luego consultas min-width que agregan columnas.
El mismo HTML a 390 y a 1280 píxeles: apilado en el celular, con barra lateral y dos columnas en la pantalla ancha.

Otras cosas que puede preguntar una consulta

Las media queries pueden comprobar algo más que el ancho. Las características de preferencias del lector vienen de Media Queries Level 5: (prefers-color-scheme: dark) coincide cuando el lector eligió un tema oscuro en el sistema operativo, así que puedes ofrecer colores oscuros de forma automática. (prefers-reduced-motion: reduce) coincide cuando el lector pidió menos movimiento, a menudo porque las animaciones lo marean; desactiva ahí dentro los movimientos grandes y los efectos parallax. (hover: hover), de Level 4, te dice si el puntero principal puede pasar por encima de los elementos, algo que una pantalla táctil no puede hacer. print da estilo a una página para el papel, por ejemplo ocultando el menú. Por último, clamp() ajusta tamaños de forma suave sin ninguna consulta: font-size: clamp(1.5rem, 4vw, 2.5rem) crece con la pantalla, pero nunca baja de 1.5rem ni pasa de 2.5rem.

Los cuadros de vista previa de esta página solo miden de 340 a 530 píxeles de ancho, así que el ejercicio de abajo usa un punto de corte pequeño de 300px para que puedas verlo funcionar. En un sitio real, elige los puntos de corte según tu propio contenido, como 600px o 40em.
diseño adaptableUna página que se adapta a todas las pantallas
ventana gráfica (viewport)El área visible de la página en el navegador
width=device-widthUsa el ancho real del dispositivo, no unos 980px virtuales
media query@media (condición) { reglas }
primero el móvil (mobile first)Estilos base para pantallas angostas y luego consultas min-width
punto de corteUn ancho en el que cambia la maquetación
prefers-reduced-motionEl lector pidió menos animación
clamp()Un valor entre un mínimo y un máximo
  1. ¿Por qué fallan las media queries para celulares sin la etiqueta meta viewport?
    • El celular maqueta la página con un ancho virtual grande
    • Los celulares ignoran CSS
    • Las media queries necesitan JavaScript
  2. ¿Cuándo se aplica @media (min-width: 600px)?
    • Cuando la ventana gráfica mide 600px de ancho o más
    • Por debajo de 600px
    • Solo exactamente a 600px
  3. ¿Qué significa primero el móvil?
    • Escribir los estilos base para pantallas angostas y luego agregar consultas min-width
    • Hacer primero el sitio para celular y después el de escritorio
    • Ocultar contenido en los celulares
  4. ¿Qué regla impide que las imágenes grandes se desborden en pantallas angostas?
    • img { max-width: 100%; height: auto; }
    • img { width: 1200px; }
    • img { display: none; }
  5. ¿Con qué ancho pide WCAG 1.4.10 Reflujo que el contenido funcione sin desplazamiento en dos direcciones?
  6. ¿Por qué nunca poner user-scalable=no?
    • Bloquea el zoom y deja fuera a las personas con baja visión
    • Rompe las media queries
    • No es HTML válido
  7. ¿Cómo debes elegir los puntos de corte?
    • Donde tu contenido empieza a verse mal
    • De una lista de celulares populares
    • Siempre 768px
  8. ¿Qué consulta coincide con los lectores que pidieron menos animación?
    • (prefers-reduced-motion: reduce)
    • (hover: none)
    • (orientation: portrait)
  9. font-size: clamp(1.5rem, 4vw, 2.5rem) en una pantalla de 1600px de ancho con rem de 16px. ¿Qué tamaño resulta?
  10. ¿Por qué escribir los puntos de corte en em?
    • Responden cuando el lector agranda el texto
    • em es obligatorio en las media queries
    • Cargan más rápido
Ideas clave
  • Agrega la etiqueta meta viewport; nunca bloquees el zoom.
  • Anchos fluidos, max-width en lugar de width, img { max-width: 100%; height: auto; }.
  • Primero el móvil, con consultas min-width en los puntos de corte del contenido; además prefers-color-scheme, prefers-reduced-motion, print y clamp().
Fuentes de este curso (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Fecha de consulta: 2026-10-17