Diseño Flexible con Flexbox en CSS

Concepto de Flexbox

El modelo de diseño Flexible Box (Flexbox) proporciona un método eficiente para alinear y distribuir espacio antre elementos dentro de un contenedor. Para activar este modelo, se aplica la propiedad display: flex al elemento contenedor. Los elementos en línea pueden usar display: inline-flex. Una vez establecido, las propiedades como float, clear y vertical-align de los elementos hijos pierden efecto.

Estructura del Modelo Flexbox

El elemento que declara display: flex se denomina contenedor flex, y sus hijos directos se convierten en ítemss flex. Este contenedor define dos ejes: el eje principal (main axis), que determina la dirección de los ítems, y el eje transversal (cross axis), perpendicular al principal.

Propiedades del Contenedor

flex-direction

Controla la orientación del eje principal y, por tanto, la secuencia de los ítems dentro del contenedor.

.contenedor {
  flex-direction: row; /* Valor por defecto: ítems en fila de izquierda a derecha */
  flex-direction: row-reverse; /* Ítems en fila de derecha a izquierda */
  flex-direction: column; /* Ítems en columna de arriba hacia abajo */
  flex-direction: column-reverse; /* Ítems en columna de abajo hacia arriba */
}

flex-wrap

Determnia si los ítems deben ajustarse en una sola línea o envolverse en múltiples líneas cuando el espacio es limitado.

.contenedor {
  flex-wrap: nowrap; /* Por defecto: todos los ítems en una línea */
  flex-wrap: wrap; /* Los ítems se envuelven, la primera línea en la parte superior */
  flex-wrap: wrap-reverse; /* Los ítems se envuelven, la primera línea en la parte inferior */
}

justify-content

Alinea los ítems a lo largo del eje principal, gestionando el espacio disponible entre ellos.

.contenedor {
  justify-content: flex-start; /* Alineación al inicio del eje principal */
  justify-content: flex-end; /* Alineación al final del eje principal */
  justify-content: center; /* Centrado en el eje principal */
  justify-content: space-between; /* Espacio uniforme entre ítems, bordes pegados */
  justify-content: space-around; /* Espacio igual alrededor de cada ítem */
}

align-items

Alinea los ítems en el eje transversal, definiendo su comportamiento perpendicular al flujo principal.

.contenedor {
  align-items: flex-start; /* Alineación al inicio del eje transversal */
  align-items: flex-end; /* Alineación al final del eje transversal */
  align-items: center; /* Centrado en el eje transversal */
  align-items: baseline; /* Alineación según la línea base del texto */
  align-items: stretch; /* Por defecto: los ítems se estiran para llenar el contenedor */
}

align-self

Permite que un ítem flex individual anule la alineación definida por align-items en el contenedor, aplicándose directamente al ítem.

.item {
  align-self: auto; /* Hereda la configuración del contenedor */
  align-self: flex-start; /* Alineación personalizada al inicio del eje transversal */
  align-self: flex-end; /* Alineación personalizada al final del eje transversal */
  align-self: center; /* Centrado personalizado en el eje transversal */
  align-self: baseline; /* Alineación personalizada según la línea base */
  align-self: stretch; /* Estiramiento personalizado */
}

Etiquetas: Flexbox css layout responsive-design

Publicado el 6-19 18:04