CSS Grid: Plantillas con grid-template-areas
Aprende la forma más intuitiva de maquetar páginas web: asignación semántica de componentes mediante nombres de área y mapas visuales de texto en formato ASCII con grid-template-areas.
Maquetación Visual con grid-template-areas
grid-template-areas te permite "dibujar" el diseño completo de una página web en tu código CSS mediante un mapa de texto intuitivo, asignando nombres a cada región de la cuadrícula.
/* Dibujo conceptual del layout de la página */
.layout-web {
display: grid;
grid-template-columns: 240px 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"cabecera cabecera"
"lateral principal"
"pie pie";
min-height: 100vh;
gap: 15px;
}
Asignación de Elementos a las Áreas
Una vez definida la plantilla en el contenedor padre, cada elemento hijo se asigna a su respectiva zona mediante la propiedad grid-area:
.header { grid-area: cabecera; }
.sidebar { grid-area: lateral; }
.main-content { grid-area: principal; }
.footer { grid-area: pie; }
- Celdas vacías: Si deseas dejar un espacio en blanco en la cuadrícula, coloca un punto (
.) en lugar de un nombre. - Reglas de oro: Cada área debe formar un rectángulo continuo. No se permiten formas en "L" ni áreas discontinuas.
⚡ Layout Completo de Aplicación Web con Áreas Nombradas
Observa cómo la cabecera y el pie abarcan las dos columnas completas, mientras que la barra lateral y el contenido central se reparten el centro de forma semántica:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>CSS Grid: Template Areas</title>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f8fafc;
margin: 0;
padding: 20px;
color: #0f172a;
}
/* Contenedor del Layout Web */
.app-layout {
display: grid;
grid-template-columns: 220px 1fr;
grid-template-rows: 60px 240px 50px;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
gap: 14px;
max-width: 800px;
margin: 0 auto;
}
/* Asignación de componentes a las áreas */
.area-header {
grid-area: header;
background: #1e40af;
color: white;
display: flex;
align-items: center;
padding: 0 20px;
border-radius: 8px;
font-weight: bold;
}
.area-sidebar {
grid-area: sidebar;
background: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 8px;
padding: 16px;
}
.area-sidebar ul {
list-style: none;
padding: 0;
margin: 0;
}
.area-sidebar li {
padding: 8px 0;
border-bottom: 1px solid #f1f5f9;
font-size: 0.9rem;
color: #475569;
}
.area-content {
grid-area: content;
background: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 8px;
padding: 20px;
}
.area-footer {
grid-area: footer;
background: #0f172a;
color: white;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
font-size: 0.85rem;
}
</style>
</head>
<body>
<div class="app-layout">
<header class="area-header">
<span>Kilopolis Portal · Cabecera (header)</span>
</header>
<aside class="area-sidebar">
<strong style="font-size: 0.85rem; color: #64748b; text-transform: uppercase;">Navegación</strong>
<ul>
<li>» Panel Principal</li>
<li>» Manuales Activos</li>
<li>» Sandbox en Vivo</li>
<li>» Configuración</li>
</ul>
</aside>
<main class="area-content">
<h3 style="margin-top: 0; color: #1e40af;">Área de Contenido Principal (content)</h3>
<p style="color: #475569; font-size: 0.95rem; line-height: 1.6;">
El diseño visual está mapeado limpiamente con <code>grid-template-areas</code>. Si deseas cambiar a diseño móvil, solo necesitas redefinir el mapa de texto a una sola columna en una media query.
</p>
</main>
<footer class="area-footer">
<span>© Kilopolis Academia · Pie de Página (footer)</span>
</footer>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de CSS3, Flexbox y Grid y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.