Ya sabes poner elementos uno al lado del otro. Fantástico. Pero ahora imagina que tienes cinco tarjetas y solo caben tres en la fila. ¿Qué hace Flexbox por defecto?
Las aprieta. Las encoge. Las apretuja como pasajeros en un metro a las ocho de la mañana, hasta que entren todas en una sola línea, aunque queden incómodas.
Si encima las tarjetas no pueden encogerse más, alguna empieza a desbordar el contenedor y el diseño se rompe.
Aquí entran dos herramientas que hacen que Flexbox pase de útil a comodísimo:
gap: para separar elementos.flex-wrap: para permitir que salten de línea cuando ya no caben.gap: espacio sin trucos rarosAntes, la única forma de separar elementos en una fila era darles márgenes individuales: margin-right: 20px a cada uno, y luego acordarse de quitárselo al último para que no sobrara espacio. Funcionaba, pero era incómodo y propenso a errores.
Con Flexbox, todo eso desaparece. Le pides al padre que ponga aire entre sus hijos:
Y CSS deja 20 píxeles de espacio entre los hijos. Limpio, directo y sin malabares.
Lo importante: gap solo separa entre elementos. No añade espacio al principio ni al final del contenedor. Justo lo que casi siempre quieres.
flex-wrap: deja que respirenPor defecto, Flexbox intenta meter todos los hijos en una sola línea. Aunque no quepan. Aunque sufran. Aunque el diseño pida ayuda a gritos. A esta regla por defecto se le llama flex-wrap: nowrap, y no se nota porque ya viene activada.
Para romper esa regla y permitir saltos de línea, hay que decirlo explícitamente:
Con eso, los elementos pueden saltar a la línea siguiente cuando ya no entra ni uno más. Si el contenedor se hace más estrecho, suben otros. Si se hace más ancho, vuelven a subir. Es responsive sin esfuerzo.
Cuando combinas las tres propiedades en el mismo contenedor:
obtienes una galería flexible, ordenada y con respiración visual:
Muy poca gente extraña los viejos hacks después de probar esto. Esta combinación es la base de la mayoría de galerías, listas de tarjetas y rejillas simples que ves por la web.
Haz que .galeria use display: flex, flex-wrap: wrap y gap: 20px. Observa cómo los cinco elementos se acomodan solos según el espacio disponible.
Ahora tus elementos no solo se alinean: también saben adaptarse...