Saltar al contenido
Curso de CSS
Todos los cursos

Ejercicio: Diseño responsivo

  • ⏱ 40 minutos
  • 📶 Nivel: principiante

Objetivo

Hacer responsiva una página con un enfoque mobile-first: ancho fluido, titular con clamp(), cuadrícula que pasa de 1 a 2 y 4 columnas, y una cabecera que cambia de columna a fila.

La página de partida

Este es el HTML de tu página. No lo modifiques: escribe solo el CSS.

pagina.html
<header class="cab"><strong class="marca">Mi sitio</strong>
  <nav class="menu"><a href="#">Inicio</a><a href="#">Cursos</a><a href="#">Blog</a></nav></header>
<main class="contenido">
  <h1 class="titulo">Un diseño que se adapta</h1>
  <section class="tarjetas">
    <article class="tarjeta">A</article><article class="tarjeta">B</article>
    <article class="tarjeta">C</article><article class="tarjeta">D</article>
  </section>
  <img class="foto" alt="Imagen de ejemplo" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='600'%3E%3Crect width='1200' height='600' fill='%234f46e5'/%3E%3C/svg%3E">
</main>
✏️ Prueba tu CSS aquí (opcional)

Pasos

Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.

💡 Pista 1: mi media query parece no hacer nada

Este comprobador prueba tu CSS en una pantalla de 400px, así que las reglas min-width: 600px no se aplicarán aquí: es lo esperado. Comprobamos que las escribiste y que la base móvil es correcta.

💡 Pista 2: ¿cómo escribo la cuadrícula móvil?

display: grid; gap: 12px; crea una columna automática. Las columnas del escritorio se definen solo dentro de la media query.

🔎 Comprueba tu trabajo

Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.

    ✅ Ver una solución de ejemplo

    Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.

    estilos.css
    *, *::before, *::after { box-sizing: border-box; }
    body { margin: 0; font-family: system-ui, sans-serif; }
    
    .contenido {
      width: min(100% - 2rem, 70rem);
      margin-inline: auto;
    }
    
    .titulo { font-size: clamp(1.5rem, 1rem + 4vw, 3rem); }
    
    .tarjetas {
      display: grid;
      gap: 12px;
    }
    .tarjeta { background: #eef2ff; padding: 20px; border-radius: 12px; }
    
    .foto { display: block; max-width: 100%; height: auto; }
    
    .cab { display: grid; gap: 8px; padding: 12px 16px; }
    
    @media (min-width: 600px) {
      .tarjetas { grid-template-columns: repeat(2, 1fr); }
      .cab { display: flex; justify-content: space-between; align-items: center; }
    }
    
    @media (min-width: 960px) {
      .tarjetas { grid-template-columns: repeat(4, 1fr); }
    }

    💡 🏁 Reto extra (opcional)

    Añade una media query (prefers-color-scheme: dark) que cambie el fondo y el texto del body. Pruébala activando el modo oscuro de tu sistema.