CSS Grid a fondo: diseño en dos dimensiones
Domina CSS Grid: líneas, áreas, auto-placement, subgrid y patrones reales para layouts modernos.
CSS Grid es el sistema de layout ideal para organizar contenido en dos dimensiones: filas y columnas a la vez.
A diferencia de Flexbox (una dimensión), Grid te permite definir estructuras completas de página con precisión.
En esta lección veremos todas sus propiedades clave, usos comunes y subgrid.
- Cuándo usar cada uno.
- Flexbox es un layout de una dimensión: fila o columna. Es perfecto para barras, menús o componentes en línea.
- Grid es bidimensional: puedes controlar filas y columnas al mismo tiempo. Ideal para layouts completos y tarjetas.
- En la práctica, se combinan: Grid para la estructura general y Flexbox para alinear componentes internos.
- Flex: distribución en un eje.
Grid vs Flexbox
Cuándo usar cada uno.
Flexbox es un layout de una dimensión: fila o columna. Es perfecto para barras, menús o componentes en línea.
Grid es bidimensional: puedes controlar filas y columnas al mismo tiempo. Ideal para layouts completos y tarjetas.
En la práctica, se combinan: Grid para la estructura general y Flexbox para alinear componentes internos.
- Flex: distribución en un eje.
- Grid: estructura completa en dos ejes.
- Ambos se complementan, no compiten.
Conceptos fundamentales
Los bloques básicos del sistema Grid.
Propiedades del contenedor Grid
Define filas, columnas, áreas y flujo.
display: grid activa el contenedor.
grid-template-columns y grid-template-rows definen la malla base.
La unidad fr reparte el espacio libre entre columnas o filas.
gap controla el espacio entre filas y columnas.
Funciones especiales
Atajos y tamaños flexibles para la malla.
repeat(n, valor) simplifica patrones repetitivos.
minmax(min, max) define un rango de tamaño para pistas flexibles.
fit-content(límite) ajusta al contenido sin superar un máximo.
Auto-fill vs Auto-fit
Dos comportamientos para grids responsivos.
auto-fill crea columnas vacías si hay espacio sobrante.
auto-fit colapsa esas columnas y expande las ocupadas.
Grid Template Areas
Define el layout de forma visual.
Nombras áreas y dibujas el layout con strings.
Cada item se asigna con grid-area.
Alineación
Control fino en ejes y celdas.
- justify-items / align-items: alinea ítems dentro de su celda.
- justify-content / align-content: alinea toda la cuadrícula en el contenedor.
- place-items: atajo para align-items + justify-items.
Propiedades de los ítems
Colocación, spans y alineación.
grid-column y grid-row controlan en qué líneas empieza y termina un ítem.
Puedes usar span para indicar cuántas columnas/filas ocupa.
grid-area asigna un ítem a una zona definida en el contenedor.
justify-self y align-self permiten alinear un ítem dentro de su celda.
Subgrid
Hereda la malla del contenedor padre.
subgrid permite que un elemento hijo reutilice la definición de filas/columnas del grid padre.
Es ideal para alinear tarjetas internas o secciones con la misma estructura.
Actualmente está soportado en navegadores modernos; revisa compatibilidad si necesitas soporte legacy.
Patrones y usos comunes
Layouts reales con Grid.
- Layout de página: header, sidebar, contenido y footer con grid-template-areas.
- Galerías responsivas: repeat(auto-fit, minmax(200px, 1fr)).
- Dashboard: columnas fijas + filas elásticas.
- Tarjetas con alineación consistente usando subgrid.
- Zonas destacadas usando spans para ampliar tarjetas.