Saltar al contenidoIr al contenido
Cómo usar Flexbox en CSS para distribuir elementos
HTML y CSS

Cómo usar Flexbox en CSS para distribuir elementos

Flexbox es una herramienta de CSS que permite distribuir y alinear elementos dentro de un contenedor de forma sencilla.

Su nombre viene de Flexible Box, que puede traducirse como caja flexible. Se utiliza principalmente en contenedores para controlar cómo se organizan los elementos que están dentro.

Qué es Flexbox

Flexbox permite convertir un elemento en una caja flexible usando la propiedad display: flex.

Esto no se aplica directamente a los elementos internos, sino al contenedor que los agrupa.

nav { display: flex; }

Al aplicar display: flex, los elementos internos se colocan por defecto en una misma línea horizontal.

Cómo funciona Flexbox

Flexbox trabaja con dos ejes:

  • Eje principal: por defecto va de izquierda a derecha.
  • Eje cruzado: va en dirección contraria al eje principal.

Si el eje principal es horizontal, el eje cruzado será vertical.

Estos ejes pertenecen al contenedor que tiene aplicado display: flex.

Alinear elementos en el eje principal

Para alinear elementos en el eje principal se utiliza justify-content.

nav { display: flex; justify-content: center; }

Algunos valores comunes son:

  • flex-start: alinea los elementos al inicio.
  • center: centra los elementos.
  • flex-end: alinea los elementos al final.
  • space-around: distribuye espacio alrededor de los elementos.
  • space-between: distribuye los elementos hasta los bordes del contenedor.

Alinear elementos en el eje cruzado

Para alinear elementos en el eje cruzado se utiliza align-items.

nav { display: flex; align-items: center; }

Esta propiedad es útil cuando el contenedor tiene altura y queremos centrar los elementos verticalmente.

Cambiar la dirección con flex-direction

Por defecto, Flexbox organiza los elementos en fila mediante row.

nav { display: flex; flex-direction: row; }

También podemos cambiar la dirección a columna:

nav { display: flex; flex-direction: column; }

Cuando usamos column, el eje principal pasa a ser vertical y el eje cruzado pasa a ser horizontal.

Separar elementos con gap

La propiedad gap permite añadir espacio entre los elementos internos del contenedor.

nav { display: flex; gap: 10px; }

En este ejemplo, cada elemento queda separado por 10 píxeles.

Ejemplo con un header

Podemos aplicar Flexbox a un header para distribuir dos menús o bloques de navegación.

header { display: flex; justify-content: space-between; align-items: center; } nav { display: flex; align-items: center; gap: 10px; }

Con esta configuración, los elementos del header se distribuyen hacia los extremos y quedan alineados verticalmente al centro.

Usar margin-right: auto

En algunos casos, podemos empujar un elemento hacia un lado usando margin-right: auto.

header nav:first-of-type { margin-right: auto; }

Esto hace que el primer nav tome el espacio disponible hacia la derecha y empuje los demás elementos.

Crear tarjetas con Flexbox

Flexbox también puede utilizarse para organizar tarjetas en una cuadrícula sencilla.

Supongamos que tenemos una sección con varias tarjetas:

<section> <div>Tarjeta 1</div> <div>Tarjeta 2</div> <div>Tarjeta 3</div> <div>Tarjeta 4</div> </section>

Podemos aplicar Flexbox al contenedor:

section { display: flex; gap: 20px; max-width: 800px; margin: auto; }

Esto coloca las tarjetas en una misma fila y separa cada una con 20 píxeles.

Permitir salto de línea con flex-wrap

Cuando los elementos no caben en una sola línea, podemos permitir que bajen a la siguiente usando flex-wrap.

section { display: flex; flex-wrap: wrap; gap: 20px; max-width: 800px; margin: auto; }

Luego podemos definir el ancho de cada tarjeta:

section div { width: 45%; }

Con este ancho, pueden entrar dos tarjetas por fila, dejando espacio para el gap.

Centrar las tarjetas

Para centrar las tarjetas dentro del contenedor, podemos usar justify-content: center.

section { display: flex; flex-wrap: wrap; gap: 20px; max-width: 800px; margin: auto; justify-content: center; }

Ejemplo completo

section { display: flex; flex-wrap: wrap; gap: 20px; max-width: 800px; margin: auto; justify-content: center; } section div { width: 45%; }

Conclusión

Flexbox permite distribuir elementos de manera flexible dentro de un contenedor.

Con propiedades como display: flex, justify-content, align-items, flex-direction, gap y flex-wrap, es posible alinear menús, organizar tarjetas y crear estructuras más limpias en una página web.

Compartir
Escrito por
deybi
Soy un joven dominicano dedicado a la creación de páginas web, con un proyecto de vida claro y una visión enfocada en el crecimiento, la disciplina y el trabajo constante. Me esfuerzo cada día...

Deja un comentario