Imagina que estás diseñando una tienda en línea y necesitas organizar una lista de tarjetas de productos. Cada tarjeta debe tener un espacio uniforme entre sí, tanto en horizontal como en vertical, como en la imagen a continuación:
Antes de conocer Flexbox, probablemente usarías float
y margin
para posicionar estos elementos. Pero esto trae un problema: el margen derecho de la última tarjeta no debería estar ahí, y ajustar esto manualmente puede ser tedioso.
Vamos a analizar este problema y ver cómo Flexbox lo resuelve de manera sencilla.
Problema con float
y margin
Mira el siguiente ejemplo usando float
:
Aquí estamos usando margin
para espaciar los elementos. Sin embargo, el último elemento de cada fila tiene un margen innecesario a la derecha. Se han intentado muchas soluciones para esto: usar JavaScript, asignar clases específicas a los últimos elementos, o incluso usar el selector :nth-child
. Pero con Flexbox, podemos resolverlo con una sola regla.
Solución con justify-content
Flexbox nos ofrece una propiedad clave: justify-content
. Esta propiedad nos ayuda a distribuir los elementos dentro del contenedor de manera flexible. Veamos sus valores más comunes:
center
: Centrados en el eje principal
Cuando usamos justify-content: center
, los elementos se alinean en el centro del contenedor con espacios iguales a los lados.
flex-start
: Alineados al inicio
Los elementos comienzan desde el borde izquierdo del contenedor sin ningún espacio adicional.
flex-end
: Alineados al final
Los elementos se agrupan al final del contenedor.
space-between
: Espaciado uniforme sin márgenes laterales
El primer elemento se coloca al inicio del contenedor, el último al final, y los demás se distribuyen equitativamente.
space-around
: Espaciado uniforme con márgenes laterales
Cada elemento tiene un espaciado igual a cada lado, pero los espacios en los extremos son la mitad de los internos.
space-evenly
: Espaciado uniforme en todos los lados
Aquí, todos los espacios (incluidos los extremos) son exactamente iguales.
Alineación en el eje transversal
Flexbox nos permite no solo alinear elementos horizontalmente (justify-content
), sino también en el eje transversal con align-items
. Algunas opciones populares:
Valor | Descripción |
---|---|
flex-start |
Alinea los elementos en la parte superior del contenedor. |
flex-end |
Los alinea en la parte inferior. |
center |
Los centra verticalmente. |
stretch |
Expande los elementos para que ocupen todo el espacio disponible. |
baseline |
Alinea los elementos según su línea base de texto. |
Resumen
justify-content
ayuda a alinear elementos horizontalmente dentro de un contenedor flex.- Diferentes valores (
center
,flex-start
,flex-end
,space-between
,space-around
,space-evenly
) ofrecen distintas formas de organizar los elementos. align-items
permite alinear los elementos en el eje transversal (start
,end
,center
,stretch
,baseline
).- Con Flexbox, puedes manejar la alineación de forma flexible y responsiva sin escribir reglas CSS complicadas.
Materiales adicionales
¿Dudas sobre la lección? Pregunta en el chat del grupo
Te responderán tu mentor o tus compañeros.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.