CodeAventura
CSS
▸Flexbox▸Introducción a Flexbox

Misión

●localhost:5173
23 / 30Introducción a Flexbox
Anterior

Introducción a flexbox

El día en que CSS aprendió a colocar cosas en fila

Hasta ahora has estilizado elementos uno por uno. Cambias colores, ajustas tamaños, retocas márgenes. Todo va bien... hasta que llega la pregunta que separa la calma del sufrimiento eterno:

¿Cómo coloco varios elementos uno al lado del otro sin pelearme con CSS durante dos horas?

Durante años, la respuesta fue una mezcla de float, inline-block, tablas usadas para cosas que no eran tablas y un montón de trucos que solo entendía la persona que los escribió (y solo durante quince minutos).

La respuesta moderna y civilizada se llama Flexbox.

¿Qué es Flexbox exactamente?

Flexbox es un sistema de layout pensado para distribuir elementos dentro de un contenedor. Su superpoder es repartir el espacio disponible de forma inteligente entre los hijos, sin que tengas que calcular medidas a mano ni rezar para que encajen.

Cuando activas Flexbox en un elemento padre, sus hijos dejan de comportarse como bloques sueltos y empiezan a obedecer las reglas del contenedor: pueden ponerse en fila, separarse de forma uniforme, centrarse, estirarse o encogerse según el espacio disponible.

Todo empieza con una sola línea:

Eso convierte al elemento .contenedor en un contenedor flex, también llamado flex container.

¿Qué cambia exactamente al activar Flexbox?

Antes de poner display: flex, los div se apilan uno debajo de otro como ladrillos. Es lo natural de los elementos de bloque.

En cuanto activas Flexbox, ocurren tres cosas a la vez:

  • Los hijos se colocan en fila, uno al lado del otro.
  • Cada hijo ocupa solo el espacio que necesita (en lugar de toda la línea).
  • Aparece un sistema de ejes invisible que te permitirá alinearlos como quieras (lo verás en la próxima lección).

De repente, alinear y repartir espacio deja de ser una ceremonia oscura.

Padre e hijos: la regla de oro

Esto es lo más importante que vas a leer sobre Flexbox, y mucha gente lo olvida en su primera semana:

  • Flexbox se activa en el padre.
  • Los efectos se notan en los hijos.

No aplicas display: flex a cada item. Lo aplicas una sola vez al contenedor que los agrupa, y los hijos cambian su comportamiento automáticamente. Es como encender la luz de una habitación: no enciendes cada objeto, enciendes el espacio donde están todos.

Si alguna vez ves que "Flexbox no funciona", la pregunta correcta casi siempre es: ¿le puse display: flex al padre, no al hijo?

¿Para qué se usa en la vida real?

Flexbox no sustituye todo CSS, pero brilla en escenarios cotidianos como:

  • Barras de navegación con enlaces en fila
  • Tarjetas alineadas dentro de un panel
  • Botones que conviven con iconos
  • Cabeceras con un logo a un lado y un menú al otro
  • Cualquier diseño donde necesites una fila o una columna ordenada

Para layouts más complejos con filas y columnas a la vez, en unas lecciones veremos su hermano mayor: Grid.

Tu desafío 🚀

Convierte .contenedor en un contenedor flexible usando display: flex. Observa cómo los tres .item que están dentro pasan de estar apilados a colocarse uno al lado del otro automáticamente.

Acabas de abrir la puerta al layout moderno...