Tema 19 · Grid Template Areas

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:

index.html
Solo lectura
<!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 &middot; Cabecera (header)</span>
    </header>

    <aside class="area-sidebar">
      <strong style="font-size: 0.85rem; color: #64748b; text-transform: uppercase;">Navegación</strong>
      <ul>
        <li>&raquo; Panel Principal</li>
        <li>&raquo; Manuales Activos</li>
        <li>&raquo; Sandbox en Vivo</li>
        <li>&raquo; 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>&copy; Kilopolis Academia · Pie de Página (footer)</span>
    </footer>
  </div>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿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.