Saltar al contenido
Curso de CSS
Todos los cursos Ir al ejercicio →

Diseño responsivo

  • ⏱ 40 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Preparar una página para móviles con viewport y un enfoque mobile-first.
  • Escribir media queries para ancho, color, movimiento y puntero.
  • Usar min(), max() y clamp() para valores fluidos.
  • Probar y depurar un diseño en distintos tamaños.

1.Qué es el diseño responsivo

Tu página la verá gente con un celular de 360px, una tableta, un portátil y un monitor de 27 pulgadas. Diseño responsivo es que una sola página se adapte bien a todos, sin versiones separadas.

Se apoya en tres ideas:

  1. Layout fluido: anchos relativos (%, fr, max-width) en lugar de píxeles fijos.
  2. Contenido flexible: imágenes y textos que se ajustan a su contenedor.
  3. Media queries: reglas que cambian el diseño en ciertos tamaños o condiciones.

⚠️ Importante · El viewport

Sin esta etiqueta en el <head>, los celulares muestran la página como si fuera de escritorio y la encogen:

Imprescindible
<meta name="viewport" content="width=device-width, initial-scale=1.0">

2.Primero el móvil (mobile-first)

La estrategia más sencilla: escribe tus estilos base pensando en la pantalla más pequeña y, a medida que el espacio crece, añade mejoras con media queries min-width.

AspectoMobile-firstDesktop-first
Estilos basePara pantallas pequeñasPara pantallas grandes
Media queries@media (min-width: …) añaden complejidad@media (max-width: …) quitan complejidad
VentajaEl móvil carga menos CSS y el código es más simple—
Mobile-first en la práctica
/* Base: móvil, una columna */
.tarjetas { display: grid; gap: 16px; }

/* A partir de 600px: dos columnas */
@media (min-width: 600px) {
  .tarjetas { grid-template-columns: repeat(2, 1fr); }
}

/* A partir de 960px: cuatro columnas */
@media (min-width: 960px) {
  .tarjetas { grid-template-columns: repeat(4, 1fr); }
}
Los botones de ancho te dejan probar el diseño en un celular, una tableta y una pantalla grande.
✏️ Cambia el ancho y mira el diseño

3.Media queries en detalle

CondiciónEjemploPara qué
Ancho(min-width: 768px), (max-width: 600px)Cambiar el diseño según el espacio
Rango moderno(600px <= width <= 900px)Una franja concreta
Orientación(orientation: landscape)Horizontal o vertical
Esquema de color(prefers-color-scheme: dark)Tema oscuro del sistema
Movimiento reducido(prefers-reduced-motion: reduce)Quitar animaciones
Contraste(prefers-contrast: more)Más contraste
Puntero(hover: hover), (pointer: coarse)Distinguir ratón de pantalla táctil
ImpresiónprintEstilos para imprimir
Combinar condiciones
@media (min-width: 768px) and (orientation: landscape) { … }
@media (max-width: 600px), print { … }          /* coma = "o" */
@media not print { … }

/* Solo mostrar efectos hover donde hay ratón */
@media (hover: hover) { .tarjeta:hover { transform: translateY(-4px); } }

¿Qué puntos de ruptura usar?

No existen medidas «oficiales». Una referencia común:

NombreDesdeDispositivo típico
Móvil(base)Celulares
Tableta600px a 768pxTabletas y celulares grandes en horizontal
Escritorio960px a 1024pxPortátiles
Pantalla ancha1280px o másMonitores

💡 Consejo · Rompe donde se rompe el contenido

Los mejores puntos de ruptura no son los de los dispositivos, sino los de tu diseño: reduce la ventana y añade una media query justo cuando algo se vea mal. Así tu diseño funciona en cualquier tamaño, no solo en los «típicos».

4.Valores fluidos: menos media queries

Con unas pocas funciones puedes lograr que tamaños y espacios se adapten de forma continua:

FunciónQué haceEjemplo
min(a, b)El menor de los doswidth: min(100%, 700px)
max(a, b)El mayor de los dospadding: max(16px, 4vw)
clamp(mín, ideal, máx)Un valor que crece pero con límitesfont-size: clamp(1rem, 2.5vw, 1.5rem)
calc()Operaciones con unidades distintaswidth: calc(100% - 2rem)
Contenedor, texto y espacios fluidos
.contenido {
  width: min(100% - 2rem, 70rem);    /* 1rem de aire a cada lado, máximo 70rem */
  margin-inline: auto;
}
h1 { font-size: clamp(1.75rem, 1rem + 3vw, 3rem); }
.seccion { padding-block: clamp(2rem, 6vw, 5rem); }
✏️ Fluido sin media queries

5.Imágenes y medios responsivos

Que nada se desborde
img, video, svg {
  max-width: 100%;
  height: auto;       /* conserva la proporción */
  display: block;
}

.hero-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;  /* recorta en vez de deformar */
}

📌 Nota · Peso, no solo tamaño

Que una imagen de 4000px «quepa» en un celular con max-width: 100% no significa que cargue rápido: se descarga entera. Redimensiona y comprime antes de subir y usa srcset para los casos importantes.

6.Container queries: componentes que se adaptan a su espacio

Una media query mira la ventana. Pero un componente (una tarjeta) puede estar en una barra lateral estrecha o en una zona ancha en la misma pantalla. Con las container queries el componente responde al tamaño de su contenedor:

Una tarjeta que cambia según su contenedor
.envoltura { container-type: inline-size; }

.tarjeta { display: grid; gap: 8px; }

@container (min-width: 420px) {
  .tarjeta { grid-template-columns: 120px 1fr; }
}

📌 Nota · Ya se pueden usar

Las container queries funcionan en todos los navegadores modernos. Son ideales para componentes reutilizables: la misma tarjeta se ve bien en cualquier parte, sin depender del ancho de la pantalla.

7.Cómo probar tu diseño responsivo

  1. Modo dispositivo: en las herramientas (F12), pulsa el icono de móvil o Ctrl + Shift + M. Elige un celular o arrastra el borde para cualquier ancho.
  2. Reduce la ventana de tu navegador de escritorio hasta 320px: es el ancho más pequeño razonable.
  3. Aumenta el zoom al 200%: así se ve en pantallas pequeñas y para quien agranda el texto.
  4. Prueba en un celular real, al menos una vez. Lo táctil (botones de 44px o más) no se aprecia en el escritorio.
  5. Gira el dispositivo: vertical y horizontal.

💡 Consejo · Qué buscar

Que no haya desplazamiento horizontal, que ningún texto se salga ni se superponga, que los botones sean fáciles de pulsar y que nada importante se oculte solo porque «no cabe».

8.Errores frecuentes

📒 Apuntes para llevar

  • Diseño responsivo = layout fluido + contenido flexible + media queries.
  • Imprescindible: <meta name="viewport" content="width=device-width, initial-scale=1.0">.
  • Mobile-first: estilos base para móvil y @media (min-width: …) para añadir mejoras.
  • Las media queries también detectan prefers-color-scheme, prefers-reduced-motion, hover y print.
  • Elige los puntos de ruptura donde tu diseño se rompe, no los de dispositivos concretos.
  • min(), max(), clamp() y calc() permiten valores fluidos sin media queries.
  • img { max-width: 100%; height: auto } y aspect-ratio/object-fit mantienen las imágenes ordenadas.
  • Las container queries adaptan un componente al tamaño de su contenedor.

9.Glosario

TérminoSignificado
ResponsivoDiseño que se adapta a cualquier tamaño de pantalla.
Media queryCondición que activa estilos solo si se cumple.
Punto de rupturaAncho donde el diseño cambia.
Mobile-firstEstrategia que parte del móvil y añade mejoras con min-width.
viewportÁrea visible de la página; se configura con una etiqueta meta.
clamp()Valor que crece entre un mínimo y un máximo.
Container queryRegla que depende del tamaño del contenedor, no de la ventana.
Layout fluidoDiseño con medidas relativas que se estiran y encogen.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Qué hace @media (min-width: 600px)?

En una estrategia mobile-first, ¿qué tipo de media query se usa mayormente?

Las media queries no funcionan en el celular. ¿Qué falta probablemente?

¿Qué hace font-size: clamp(1rem, 4vw, 2rem)?

¿Qué ventaja tienen las container queries?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio