CSS 09: Grid Masterclass

El sistema de diseño bidimensional definitivo para la web moderna.

1. Introducción a Grid Layout

CSS Grid Layout es el sistema de diseño más potente disponible en CSS. A diferencia de Flexbox (que es unidimensional), Grid es bidimensional: maneja filas y columnas simultáneamente.

Grid vs Flexbox

  • Flexbox: Contenido primero. "Tengo estos elementos, ¿cómo los distribuyo?"
  • Grid: Diseño primero. "Tengo este diseño (cuadrícula), ¿dónde pongo los elementos?"

2. Definir la Cuadrícula

Para crear una grid, aplicamos display: grid al contenedor. Luego definimos las "pistas" (filas y columnas).

grid-template-columns / rows

Define el tamaño de las columnas y filas.

Unidades Clave:

  • px, rem, %: Unidades estándar.
  • fr (Fracción): La unidad mágica. Representa una fracción del espacio disponible.
  • auto: Se adapta al tamaño del contenido.
.container {

    display: grid;

    /* 3 columnas: 100px, 1 fracción, 2 fracciones */

    grid-template-columns: 100px 1fr 2fr; 

    /* 2 filas de 50px */

    grid-template-rows: 50px 50px;

}
100px
1fr
2fr (Doble)

repeat()

Función para evitar repeticiones. repeat(3, 1fr) es igual a 1fr 1fr 1fr.

1
2
3
4

minmax()

Define un rango de tamaño. "Mínimo 100px, pero si puedes, crece hasta 1fr".

grid-template-columns: repeat(3, minmax(150px, 1fr));

gap

Define el espacio entre celdas (antes grid-gap).

gap: 20px;       /* Filas y Columnas */

gap: 10px 30px;  /* Filas | Columnas */

3. Posicionamiento de Ítems

Puedes colocar elementos en cualquier lugar de la cuadrícula usando números de línea.

grid-column / grid-row

Shorthand para start / end. Las líneas se cuentan desde 1.

.item {

    grid-column: 1 / 3; /* Empieza en línea 1, acaba en 3 (Ocupa 2 celdas) */

    grid-row: 2 / 4;    /* Empieza en fila 2, acaba en 4 */

}
Header (1 / 5)
Sidebar (Row 2-4)
Main Content
Footer
Truco: span

Si no quieres contar líneas, di cuántas celdas quieres ocupar:

grid-column: span 2;

4. Áreas de Plantilla (Grid Areas)

La forma más visual y semántica de diseñar. Das nombres a las celdas y dibujas el layout.

.container {

    display: grid;

    grid-template-areas:

        "header header header"

        "sidebar main main"

        "footer footer footer";

}



.cabecera { grid-area: header; }

.lateral  { grid-area: sidebar; }

.contenido { grid-area: main; }

.pie       { grid-area: footer; }

5. Alineación

Grid tiene dos niveles de alineación, similar a Flexbox pero en dos ejes.

Alinear Ítems (Dentro de su celda)

Alinear la Grid (Dentro del contenedor)

Si la grid es más pequeña que el contenedor.

6. Trucos Avanzados y Modernos

Grid Responsiva Automática (RAM Pattern)

El patrón más famoso. Crea columnas que se adaptan automáticamente sin usar Media Queries.

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

Esto dice: "Crea tantas columnas de mínimo 200px como quepan. Si sobra espacio, repártelo (1fr)".

Auto Fit 1
Auto Fit 2
Auto Fit 3

Grid Auto Flow Dense

Si tienes huecos vacíos en tu grid porque un elemento grande no cabía, grid-auto-flow: dense le dice al navegador que intente rellenar esos huecos con elementos más pequeños que vengan después.

Subgrid NUEVO

Permite a un hijo heredar la cuadrícula de su padre en lugar de definir una nueva.

.hijo {

    display: grid;

    grid-template-columns: subgrid; /* Usa las columnas del padre */

}
Volver a CSS

🎮 ¡Practica lo aprendido!

Hemos movido la herramienta de entrenamiento a una página dedicada para que puedas usarla con mayor comodidad a pantalla completa.

Ir a la Zona de Entrenamiento Grid