Saltar al contenido
Curso de CSS
Todos los cursos

Ejercicio: Flexbox

  • ⏱ 30 minutos
  • 📶 Nivel: principiante

Objetivo

Maquetar una cabecera, una fila de tarjetas de igual altura y un bloque centrado usando solo Flexbox.

La página de partida

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

pagina.html
<header class="cabecera">
  <a class="logo" href="#">Mi sitio</a>
  <nav class="menu">
    <a href="#">Inicio</a>
    <a href="#">Cursos</a>
    <a href="#">Blog</a>
    <a href="#">Contacto</a>
  </nav>
  <a class="cta" href="#">Entrar</a>
</header>
<section class="tarjetas">
  <article class="tarjeta"><h3>Uno</h3><p>Texto corto.</p></article>
  <article class="tarjeta"><h3>Dos</h3><p>Un texto bastante más largo para comprobar que todas las tarjetas conservan la misma altura.</p></article>
  <article class="tarjeta"><h3>Tres</h3><p>Texto medio de ejemplo.</p></article>
</section>
<div class="centro"><p>Centrado</p></div>
✏️ Prueba tu CSS aquí (opcional)

Pasos

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

💡 Pista 1: el menú no se va a la derecha

margin-left: auto en .menu empuja todo lo que esté después hacia el final. El .cta queda justo a su derecha.

💡 Pista 2: ¿cómo igualo las alturas?

No hace falta nada: align-items: stretch es el valor por defecto de un contenedor flex. Solo asegúrate de no haber puesto align-items distinto en .tarjetas.

🔎 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; }
    
    .cabecera {
      display: flex;
      align-items: center;
      gap: 16px;
      padding: 12px 20px;
    }
    
    .menu {
      display: flex;
      gap: 14px;
      margin-left: auto;
    }
    
    .tarjetas {
      display: flex;
      flex-wrap: wrap;
      gap: 16px;
      padding: 20px;
    }
    
    .tarjeta {
      flex: 1 1 200px;
      border: 1px solid #dde2ef;
      border-radius: 12px;
      padding: 16px;
    }
    
    .centro {
      display: flex;
      justify-content: center;
      align-items: center;
      min-height: 160px;
    }

    💡 🏁 Reto extra (opcional)

    Haz que en pantallas menores de 600px el .menu pase a una columna debajo del logo. (Pista: flex-wrap y flex-basis: 100%, o una media query con flex-direction: column.)