Flexbox, explicado moviendo cajas

Cambia flex-direction, justify-content, align-items, gap y flex-wrap con los controles y mira cómo se colocan las cajas y qué CSS genera.

Laboratorio de Flexbox

Flexbox coloca elementos en una fila o una columna y reparte el espacio entre ellos. La forma más rápida de entenderlo es tocar los controles y mirar.

El eje principal y el eje cruzado

Todo en Flexbox gira en torno a dos ejes. Con flex-direction: row el eje principal es horizontal y el cruzado vertical. Con column se intercambian.

Propiedades de los hijos

Las de arriba van en el contenedor. Estas van en cada caja hija:

.caja {
  flex-grow: 1;    /* reparte el espacio sobrante (0 = no crecer) */
  flex-shrink: 1;  /* se encoge si falta espacio */
  flex-basis: 200px; /* tamaño de partida antes de crecer/encoger */

  /* atajo habitual: */
  flex: 1;         /* = flex: 1 1 0  → todas iguales, ocupan todo */
}

.caja-especial {
  align-self: flex-end;  /* como align-items pero solo para esta caja */
}

Recetas rápidas

/* Centrar algo, del todo */
.centrado { display: flex; justify-content: center; align-items: center; }

/* Barra de navegación: logo a la izquierda, menú a la derecha */
.navbar { display: flex; justify-content: space-between; align-items: center; }

/* Fila de tarjetas que salta de línea sola */
.tarjetas { display: flex; flex-wrap: wrap; gap: 16px; }
.tarjetas > * { flex: 1 1 240px; }   /* mínimo 240px, luego crecen */

Siguiente paso

Flexbox es para una dimensión (fila o columna). Para rejillas de dos dimensiones a la vez, usa CSS Grid. Repasa también CSS desde el principio.