Introducción a CSS Flexbox

CSS
Desarrollo
2023-09-25
imagen blog

¿Qué es Flexbox?

Flexbox (Flexible Box Layout) es un modelo de diseño de CSS que permite organizar elementos en un contenedor de manera eficiente y flexible. Es especialmente útil para crear diseños responsivos y alinear elementos en una dirección (fila o columna) de forma que se adapten a diferentes tamaños de pantalla.

Ejemplo de estructura HTML:

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

Configuración básica de Flexbox

Para usar Flexbox, primero debes definir un contenedor flex utilizando la propiedad display: flex. Los elementos dentro de este contenedor se convertirán en elementos flexibles.

Ejemplo de CSS:

.container {
  display: flex;
}
.item {
  width: 100px;
  height: 100px;
  background-color: #3498db;
  margin: 10px;
}

Alineación de elementos

Las propiedades justify-content y align-items son esenciales para alinear elementos dentro del contenedor flex.

Ejemplo de CSS:

.container {
  display: flex;
  justify-content: center; /* Centrar horizontalmente */
  align-items: center; /* Centrar verticalmente */
}

Orden de elementos

La propiedad order permite cambiar el orden visual de los elementos flexibles sin modificar el orden en el código HTML.

Ejemplo de CSS:

.item:nth-child(2) {
  order: 1; /* Cambiar el orden del segundo elemento */
}

Espaciado entre elementos

Para controlar el espacio entre elementos flexibles, puedes usar las propiedades justify-content y align-content.

Ejemplo de CSS:

.container {
  display: flex;
  justify-content: space-between; /* Espacio entre elementos */
  align-content: center; /* Centrar verticalmente */
}

Tamaño de elementos

Las propiedades flex-grow, flex-shrink, y flex-basis te permiten controlar el tamaño de los elementos flexibles.

Ejemplo de CSS:

.item {
  flex: 1 0 200px; /* Crecer, no encoger, tamaño base de 200px */
}

Este artículo proporciona una sólida introducción a Flexbox con ejemplos detallados de código.