Ejercicio: Flexbox
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.
<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>
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.
*, *::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.)