CSS Grid

Flexbox ordena en una fila o una columna. Grid ordena en filas y columnas a la vez: es la herramienta para el diseño completo de una página.

Ya conoces flexbox, del tutorial anterior: es para acomodar cosas en una sola dirección, como una fila de tarjetas. grid es para cuando necesitas controlar filas y columnas al mismo tiempo —el layout completo de una página, con encabezado, menú lateral y contenido—.

No compiten: la mayoría de los sitios reales usan grid para la estructura grande, y flexbox para acomodar cosas dentro de cada parte.

display: grid convierte un elemento en una cuadrícula. grid-template-columns define cuántas columnas hay y qué ancho tiene cada una. gap es el espacio entre celdas —sin necesitar márgenes sueltos—.

La parte más clara de grid: le pones nombre a cada zona, y dibujas el layout completo como si fuera un mapa de texto. Cada elemento se ubica diciendo a qué zona pertenece.

Fíjate que grid-template-areas literalmente se ve como el layout: dos columnas, el encabezado ocupando ambas arriba, y el menú al lado del contenido abajo. Es CSS que se explica solo.

repeat(auto-fit, minmax(...)) es el truco más usado de grid: crea todas las columnas que quepan, con un ancho mínimo, y las manda a la fila siguiente solas cuando ya no caben —sin escribir una sola @media—.

display: grid, columnas con fr, layouts nombrados con grid-template-areas, y grids responsive con auto-fit y minmax.

Entre flexbox y grid ya puedes armar el layout de cualquier página. Falta que se vea bien en cualquier pantalla.