Alineación y Centrado Moderno en CSS
Domina todas las técnicas modernas de centrado y alineación: Flexbox, Grid, margin auto y place-* properties. Olvídate de los hacks del pasado.
El centrado en CSS pasó de ser un meme a una tarea trivial gracias a Flexbox y Grid.
Aprenderás cuándo usar cada técnica: place-items, place-content, justify/align, y margin auto.
Con ejemplos interactivos y casos reales: modales, cards, layouts completos.
- Por qué era tan difícil antes y cómo lo resolvemos hoy.
- Antes de Flexbox y Grid, centrar verticalmente requería hacks: position absolute con transform, table-cell, line-height igual al height, o márgenes negativos calculados.
- Estos métodos eran frágiles, poco semánticos y fallaban con contenido dinámico.
- Desde 2017, con Flexbox y Grid ya soportados en todos los navegadores, tenemos soluciones nativas, predecibles y mantenibles.
- Main axis vs cross axis, y cómo cambian según el contexto.
El problema histórico del centrado
Por qué era tan difícil antes y cómo lo resolvemos hoy.
Antes de Flexbox y Grid, centrar verticalmente requería hacks: position absolute con transform, table-cell, line-height igual al height, o márgenes negativos calculados.
Estos métodos eran frágiles, poco semánticos y fallaban con contenido dinámico.
Desde 2017, con Flexbox y Grid ya soportados en todos los navegadores, tenemos soluciones nativas, predecibles y mantenibles.
Entender los ejes de alineación
Main axis vs cross axis, y cómo cambian según el contexto.
En Flexbox, el eje principal (main axis) es horizontal por defecto (flex-direction: row), y el cruzado (cross axis) es vertical.
Si cambias a flex-direction: column, los ejes se invierten: main = vertical, cross = horizontal.
justify-content siempre controla el main axis, align-items el cross axis.
En Grid, justify-* afecta al eje horizontal (inline), align-* al vertical (block), independientemente de la dirección del texto.
- justify-content / justify-items: eje horizontal (inline) en Grid, main axis en Flex.
- align-content / align-items: eje vertical (block) en Grid, cross axis en Flex.
- place-items: atajo para align-items + justify-items.
- place-content: atajo para align-content + justify-content.
Las 4 técnicas modernas
Cuándo usar cada una según tu caso de uso.
1. Grid + place-items: center → La forma más corta para centrar un hijo único o múltiples hijos independientes.
2. Flexbox + justify-content + align-items → Ideal para centrar con contenido dinámico o múltiples elementos en fila/columna.
3. margin: auto en contexto Flex/Grid → Centra el elemento absorbiendo todo el espacio disponible, útil cuando solo un hijo necesita centrarse.
4. Grid + place-content: center → Centra toda la rejilla (grupo de elementos) dentro del contenedor, no cada elemento individual.
place-items vs place-content
La diferencia que nadie explica bien.
place-items alinea cada elemento individual dentro de su celda/espacio asignado.
place-content alinea el bloque completo de contenido (todas las celdas juntas) dentro del contenedor.
Si tienes un solo elemento, ambos dan el mismo resultado visual.
Con múltiples elementos, place-items los centra por separado; place-content centra el grupo como un bloque.
Casos de uso reales
Qué técnica elegir según tu layout.
- Modal/dialog centrado → Grid + place-items o Flexbox.
- Hero section con texto centrado → Flexbox con flex-direction: column.
- Card con contenido centrado → Grid + place-items si el contenido es compacto.
- Navbar con logo y menú → Flexbox + space-between (no centrado total).
- Footer pegado al bottom → Flexbox en body con flex-direction: column + margin-top: auto en el footer.
- Galería de imágenes centradas → Grid + place-items en cada celda.
Claves para recordar
Resumen rápido con lo esencial.