Explora la propiedad align-items en Flexbox

CSSCSSBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, explorarás la propiedad align-items en Flexbox, una poderosa técnica de diseño CSS para controlar la alineación vertical de los elementos flexibles dentro de un contenedor. A través de una serie de ejercicios prácticos, aprenderás a manipular los elementos flexibles utilizando diferentes valores de alineación, como stretch, flex-start, flex-end, center y baseline.

El laboratorio te guiará a través de la creación de estructuras HTML, la aplicación de diversas estrategias de alineación y la comprensión de cómo la propiedad align-items impacta en el diseño de los contenedores flexibles. Al experimentar con ejemplos prácticos, obtendrás conocimientos sobre cómo controlar efectivamente la posición y el tamaño de los elementos en diseños web responsivos.

Comprender los conceptos básicos del atributo align-items

En este paso, aprenderás los conceptos fundamentales de la propiedad align-items en Flexbox, que es crucial para controlar la alineación vertical de los elementos flexibles dentro de un contenedor flexible.

La propiedad align-items define cómo se alinean los elementos flexibles a lo largo del eje transversal (verticalmente en un diseño de fila, horizontalmente en un diseño de columna). Por defecto, los elementos flexibles se estiran para llenar el eje transversal del contenedor.

Vamos a crear un ejemplo simple de HTML y CSS para demostrar el uso básico de align-items:

<!doctype html>
<html>
  <head>
    <style>
      .flex-container {
        display: flex;
        height: 200px;
        border: 2px solid blue;
      }
      .flex-item {
        width: 100px;
        background-color: lightgreen;
        margin: 5px;
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
    </div>
  </body>
</html>

En este ejemplo, hemos creado un contenedor flexible con tres elementos flexibles. Por defecto, la propiedad align-items se establece en stretch, lo que significa que los elementos se estirarán para llenar la altura del contenedor.

Los principales valores de align-items son:

  • stretch (por defecto): Los elementos se estiran para llenar el contenedor
  • flex-start: Los elementos se alinean al principio del eje transversal
  • flex-end: Los elementos se alinean al final del eje transversal
  • center: Los elementos se centran a lo largo del eje transversal
  • baseline: Los elementos se alinean según su línea base de texto

Salida de ejemplo de la alineación stretch por defecto:

[Item 1][Item 2][Item 3]
 ------  ------  ------
 (full   (full   (full
  height) height) height)

Abra el WebIDE y cree un nuevo archivo llamado flexbox-align.html en el directorio ~/project. Copie el código HTML anterior en este archivo y guárdelo. Luego puede abrir el archivo en un navegador web para ver la alineación predeterminada en acción.

Crear una estructura HTML para un diseño Flexbox

En este paso, aprenderás cómo crear una estructura HTML básica que configura un diseño Flexbox. Construiremos sobre el paso anterior creando un documento HTML más estructurado con múltiples elementos flexibles.

Abra el WebIDE y cree un nuevo archivo llamado flexbox-layout.html en el directorio ~/project. Utilice la siguiente estructura HTML para demostrar un diseño Flexbox típico:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Flexbox Layout Example</title>
    <style>
      .flex-container {
        display: flex;
        background-color: #f0f0f0;
        padding: 20px;
        border: 2px solid #333;
      }
      .flex-item {
        width: 100px;
        height: 100px;
        margin: 10px;
        background-color: #4caf50;
        color: white;
        text-align: center;
        line-height: 100px;
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
      <div class="flex-item">Item 4</div>
      <div class="flex-item">Item 5</div>
    </div>
  </body>
</html>

Analicemos los componentes clave de este diseño Flexbox:

  1. El .flex-container tiene display: flex, lo que habilita el diseño Flexbox
  2. Hemos agregado 5 elementos flexibles con un estilo consistente
  3. El contenedor tiene un fondo gris claro y relleno
  4. Cada elemento tiene un ancho y altura fijos, con un fondo verde

La salida de ejemplo se verá así:

[Item 1][Item 2][Item 3][Item 4][Item 5]
   ↑       ↑       ↑       ↑       ↑
  Green   Green   Green   Green   Green
  boxes   boxes   boxes   boxes   boxes

Guarde el archivo y abrálo en un navegador web para ver el diseño Flexbox en acción. Observe cómo los elementos se distribuyen automáticamente horizontalmente con un espaciado igual.

Aplicar la alineación de estiramiento a los elementos flexibles

En este paso, explorarás la alineación predeterminada de "estiramiento" en Flexbox y entenderás cómo ajusta automáticamente el tamaño de los elementos flexibles a lo largo del eje transversal.

Abra el archivo flexbox-layout.html que creó en el paso anterior. Modificaremos el CSS para demostrar más claramente la alineación de estiramiento:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Stretch Alignment in Flexbox</title>
    <style>
      .flex-container {
        display: flex;
        height: 300px; /* Altura fija del contenedor */
        background-color: #f0f0f0;
        padding: 20px;
        border: 2px solid #333;
      }
      .flex-item {
        width: 100px;
        margin: 10px;
        background-color: #4caf50;
        color: white;
        text-align: center;
        /* Sin altura explícita establecida */
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
      <div class="flex-item">Item 4</div>
      <div class="flex-item">Item 5</div>
    </div>
  </body>
</html>

Puntos claves sobre la alineación de estiramiento:

  • Por defecto, align-items: stretch se aplica a los contenedores flexibles
  • Los elementos flexibles se estirarán automáticamente para llenar la altura del contenedor
  • Esto sucede cuando no se establece una altura explícita en los elementos
  • El estiramiento ocurre a lo largo del eje transversal (verticalmente en un diseño de fila)

Visualización de la salida de ejemplo:

[Item 1][Item 2][Item 3][Item 4][Item 5]
   ↑       ↑       ↑       ↑       ↑
 Estirado  Estirado  Estirado  Estirado  Estirado
 hasta el  hasta el  hasta el  hasta el  hasta el
 total de  total de  total de  total de  total de
 la altura la altura la altura la altura la altura

Observe cómo los elementos se expanden automáticamente para llenar la altura de 300px del contenedor flexible, aunque no se especificó la altura de ningún elemento individual. Esta es la conducta predeterminada de "estiramiento" de Flexbox.

Guarde el archivo y abrálo en un navegador web para ver la alineación de estiramiento en acción. Cada elemento tendrá la altura total del contenedor, creando una apariencia uniforme y estirada.

Experimentar con diferentes valores de align-items

En este paso, explorarás los diferentes valores de align-items y verás cómo afectan la alineación vertical de los elementos flexibles dentro de un contenedor.

Abra el archivo flexbox-layout.html y actualice el CSS para demostrar varios valores de align-items:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Align-Items Experiment</title>
    <style>
      .flex-container {
        display: flex;
        height: 300px;
        background-color: #f0f0f0;
        border: 2px solid #333;
        margin-bottom: 20px;
      }
      .flex-item {
        width: 100px;
        margin: 10px;
        background-color: #4caf50;
        color: white;
        text-align: center;
        line-height: 50px;
      }

      /* Diferentes clases de align-items */
      .stretch {
        align-items: stretch;
      }
      .flex-start {
        align-items: flex-start;
      }
      .flex-end {
        align-items: flex-end;
      }
      .center {
        align-items: center;
      }
      .baseline {
        align-items: baseline;
      }
    </style>
  </head>
  <body>
    <div class="flex-container stretch">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
    </div>
    <div class="flex-container flex-start">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
    </div>
    <div class="flex-container flex-end">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
    </div>
    <div class="flex-container center">
      <div class="flex-item">Item 1</div>
      <div class="flex-item">Item 2</div>
      <div class="flex-item">Item 3</div>
    </div>
    <div class="flex-container baseline">
      <div class="flex-item" style="font-size: 16px;">Item 1</div>
      <div class="flex-item" style="font-size: 24px;">Item 2</div>
      <div class="flex-item" style="font-size: 32px;">Item 3</div>
    </div>
  </body>
</html>

Valores clave de align-items explicados:

  1. stretch (por defecto): Los elementos se estiran para llenar la altura del contenedor
  2. flex-start: Los elementos se alinean en la parte superior del contenedor
  3. flex-end: Los elementos se alinean en la parte inferior del contenedor
  4. center: Los elementos se centran verticalmente
  5. baseline: Los elementos se alinean según su línea base de texto

Visualización de la salida de ejemplo:

Stretch:    [Item 1][Item 2][Item 3] (altura total)
Flex-Start: [Item 1][Item 2][Item 3] (alineado arriba)
Flex-End:   [Item 1][Item 2][Item 3] (alineado abajo)
Center:     [Item 1][Item 2][Item 3] (centrado verticalmente)
Baseline:   [Item 1][Item 2][Item 3] (alineado según la línea base del texto)

Guarde el archivo y abrálo en un navegador web para ver los diferentes estilos de alineación. Observe cómo cada contenedor demuestra una alineación vertical única de los elementos flexibles.

Personalizar la alineación del contenedor flexible

En este paso, aprenderás a crear un diseño Flexbox más complejo combinando diferentes técnicas de alineación y agregando personalización de elementos individuales.

Abra el archivo flexbox-layout.html y actualízalo con el siguiente ejemplo avanzado:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Advanced Flexbox Alignment</title>
    <style>
      .flex-container {
        display: flex;
        height: 300px;
        background-color: #f0f0f0;
        border: 2px solid #333;
        margin-bottom: 20px;
        padding: 10px;
      }
      .flex-item {
        width: 100px;
        margin: 10px;
        background-color: #4caf50;
        color: white;
        text-align: center;
        line-height: 50px;
      }

      /* Escenarios de alineación personalizada */
      .mixed-alignment {
        align-items: center;
      }
      .mixed-alignment.special-item {
        align-self: flex-end;
      }
      .mixed-alignment.tall-item {
        align-self: stretch;
        height: auto;
      }
    </style>
  </head>
  <body>
    <div class="flex-container mixed-alignment">
      <div class="flex-item">Normal</div>
      <div class="flex-item special-item">Special</div>
      <div class="flex-item tall-item">Tall Item</div>
    </div>
  </body>
</html>

Técnicas de personalización clave:

  1. align-items: center establece el centro vertical predeterminado
  2. align-self: flex-end anula la alineación del contenedor para elementos específicos
  3. align-self: stretch permite que un elemento individual se estire de manera diferente

Visualización de la salida de ejemplo:

[Normal Item]  [Special Item]  [Tall Item]
    ↑             ↓              ↑
  Centrado    Alineado abajo   Estirado

El ejemplo demuestra cómo se puede:

  • Establecer una alineación predeterminada para todos los elementos
  • Anular la alineación para elementos específicos
  • Crear diseños más dinámicos y flexibles

Guarde el archivo y abrálo en un navegador web para ver la alineación personalizada en acción.

Resumen

En este laboratorio, los participantes exploran la propiedad align-items en Flexbox, aprendiendo a controlar la alineación vertical de los elementos flexibles dentro de un contenedor. El laboratorio ofrece una introducción exhaustiva a diferentes estrategias de alineación, comenzando con el comportamiento predeterminado de "estiramiento" y demostrando cómo se pueden posicionar los elementos flexibles utilizando valores como flex-start, flex-end, center y baseline.

A través de ejemplos prácticos de HTML y CSS, los aprendices obtienen experiencia práctica en la manipulación de diseños de contenedores flexibles, comprendiendo cómo la propiedad align-items impacta en la colocación de los elementos a lo largo del eje transversal. El laboratorio enfatiza la importancia de esta propiedad en la creación de diseños web responsivos y visualmente equilibrados, lo que permite a los participantes desarrollar técnicas de diseño más sofisticadas y flexibles.