CSS Grid vs Flexbox: cuándo usar cada uno
Mario Rojas
1 min de lectura

Durante mucho tiempo usé Flexbox para todo. Funcionaba, pero peleaba con márgenes y anchos raros. La diferencia clave es simple:
- Flexbox organiza en una dirección (fila o columna).
- Grid organiza en dos dimensiones (filas y columnas a la vez).
Flexbox: alinear elementos en una línea
Una barra de navegación:
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
Los elementos se adaptan a su contenido. Ideal para botones, menús o un ícono junto a un texto.
Grid: una cuadrícula de tarjetas
.posts {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1.5rem;
}
Esta línea crea columnas de al menos 280px que se reacomodan solas según el ancho de pantalla. Sin media queries.
Grid: el layout de una página
.layout {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
Barra lateral, contenido, encabezado y pie, todo definido desde el contenedor.
La pregunta que me hago
¿Me importa que los elementos se alineen en columnas y filas?
- Sí → Grid.
- Solo en una dirección → Flexbox.
Y no son excluyentes: lo normal es un Grid para el layout general y Flexbox dentro de cada tarjeta.
Truco para centrar
.centro {
display: grid;
place-items: center;
}
Dos líneas y listo.