Ejercicio: CSS Grid
Objetivo
Maquetar con Grid un layout de página con áreas con nombre, una galería adaptable y un formulario alineado.
La página de partida
Este es el HTML de tu página. No lo modifiques: escribe solo el CSS.
<div class="pagina">
<header class="cab">Cabecera</header>
<nav class="lateral">Menú</nav>
<main class="principal">Contenido principal</main>
<aside class="extra">Extra</aside>
<footer class="pie">Pie</footer>
</div>
<ul class="galeria">
<li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li>
</ul>
<div class="formulario">
<label for="a">Nombre</label><input id="a">
<label for="b">Correo</label><input id="b">
</div>
Pasos
Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.
💡 Pista 1: mis áreas no funcionan
Cada fila de grid-template-areas debe tener el mismo número de celdas, y cada nombre tiene que usarse con grid-area. Revisa que no haya errores de escritura en los nombres.
💡 Pista 2: la galería no se adapta
Asegúrate de usar auto-fit (con repeat) y minmax(120px, 1fr). Con fr fijos como repeat(3, 1fr) siempre tendrás 3 columnas.
🔎 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; }
.pagina {
display: grid;
grid-template-columns: 200px 1fr 160px;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"cab cab cab"
"lat main extra"
"pie pie pie";
gap: 12px;
min-height: 400px;
}
.cab { grid-area: cab; }
.lateral { grid-area: lat; }
.principal { grid-area: main; }
.extra { grid-area: extra; }
.pie { grid-area: pie; }
.galeria {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 12px;
list-style: none;
padding: 0;
}
.galeria li {
aspect-ratio: 1;
display: grid;
place-items: center;
background: #4f46e5;
color: #fff;
}
.galeria li:first-child { grid-column: span 2; aspect-ratio: auto; }
.formulario {
display: grid;
grid-template-columns: max-content 1fr;
gap: 10px 14px;
align-items: center;
}
💡 🏁 Reto extra (opcional)
Haz que en pantallas menores de 700px las áreas se reorganicen en una sola columna (grid-template-areas con un nombre por fila). Pruébalo con el modo dispositivo de F12.