CodingTube

FlexBox

Técnica que permite crear layouts flexibles y adaptables.

Flexbox te permite posicionar elementos de forma dinámica desde un elemento padre. Imagina que tienes el siguiente código:

  <div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
  </div>

El elemento padre será el div que tiene la clases container.

Por defecto, los elementos hijos (los que tienen la clase item) se posicionarán uno debajo del otro:

flex

display: flex

Para hacer que sus elementos hijos se distribuyan en una fila, debes aplicar las siguientes propiedades CSS al contenedor:

.container {
  display: flex;
}

Esto cambiará el comportamiento de los elementos hijos, colocándolos en una fila en lugar de en una columna, el ancho de cada div dependerá del contenido:

display_flex

justify-content

También podemos modificar su posición desde aquí con la propiedad justify-content. Por ejemplo, si queremos que los elementos se distribuyan uniformemente en el espacio disponible, podemos usar:

.container {
  display: flex;
  justify-content: space-between; 
}

Esto agregará un espacio entre los elementos hijos, distribuyéndolos uniformemente en la fila:

justify_content

La propiedad justify-content puede tener los siguientes valores:

  • flex-start: Alinea los elementos al inicio del contenedor.
  • flex-end: Alinea los elementos al final del contenedor.
  • center: Alinea los elementos en el centro del contenedor.
  • space-between: Distribuye los elementos con espacio entre ellos.
  • space-around: Distribuye los elementos con espacio alrededor de ellos.

Te invito a que experimentes con cada uno de ellos.

align-items

La propiedad align-items se utiliza para alinear los elementos hijos a lo largo del eje transversal (verticalmente en un contenedor de fila).

align_items

Puedes hacer que todos los items empiecen desde la parte superior del contenedor, alineándolos al inicio:

.container {
  display: flex;
  justify-content: space-between;
  align-items: flex-start; 
}

items_start

Puede tener los siguientes valores:

  • flex-start: Alinea los elementos al inicio del contenedor.
  • flex-end: Alinea los elementos al final del contenedor.
  • center: Alinea los elementos en el centro del contenedor.
  • baseline: Alinea los elementos en la línea base del contenedor.
  • stretch: Estira los elementos para que ocupen todo el espacio disponible.

Más propiedades

Flexbox nos permite modificar la posición de los elementos de muchas formas más, las mismas que te explico a detalle en el siguiente video: