Flexbox Básico: Maquetación en una Dimensión

Si HTML es el **esqueleto** de tu página web, **CSS** es la piel, la ropa, el maquillaje y la decoración. CSS (Cascading Style Sheets, Hojas de Estilo en Cascada) es el lenguaje que usamos para **estilizar** tus documentos HTML, controlando su apariencia, diseño y cómo se presentan en diferentes dispositivos.

Piensa en CSS como la parte del diseño de una casa: elige los colores de las paredes, el tipo de muebles, cómo se distribuyen las habitaciones y qué tan grandes son las ventanas.

1. El Concepto de Contenedor y Elementos Flex

Flexbox trabaja con un concepto simple pero fundamental:

  • Contenedor Flex (Flex Container): Es el elemento padre al que le aplicas la propiedad display: flex;. Este contenedor se convierte en un «contexto flex» y sus hijos directos se convierten en «elementos flex».
    .contenedor-principal {
        display: flex; /* ¡Esto es lo esencial! */
    }
  • Elementos Flex (Flex Items): Son los hijos directos del contenedor flex. Estos elementos son los que se organizarán y comportarán según las propiedades Flexbox que apliques al contenedor y, en algunos casos, a los propios ítems.
    <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>

2. Propiedades del Contenedor Flex

La mayoría del control de Flexbox se aplica al **contenedor flex**.

a. flex-direction: Dirección del Eje Principal

Define la dirección en la que los elementos flex se colocarán en el contenedor.

  • row (por defecto): De izquierda a derecha (o derecha a izquierda en RTL).
  • row-reverse: De derecha a izquierda.
  • column: De arriba abajo.
  • column-reverse: De abajo arriba.
.flex-container {
    display: flex;
    flex-direction: column; /* Los ítems se apilarán verticalmente */
}

b. justify-content: Alineación en el Eje Principal

Controla cómo se distribuyen los elementos flex a lo largo del eje principal (el que define flex-direction).

  • flex-start (por defecto): Los ítems se agrupan al inicio del eje.
  • flex-end: Los ítems se agrupan al final del eje.
  • center: Los ítems se centran en el eje.
  • space-between: El primer y último ítem se pegan a los bordes, y el espacio restante se distribuye uniformemente entre los ítems.
  • space-around: El espacio se distribuye uniformemente alrededor de cada ítem (los extremos tienen la mitad del espacio que hay entre ítems).
  • space-evenly: El espacio se distribuye uniformemente entre los ítems Y al inicio/final del contenedor.
.flex-container {
    display: flex;
    justify-content: center; /* Centra los ítems horizontalmente (si direction es row) */
}

c. align-items: Alineación en el Eje Transversal (Cruzado)

Controla cómo se alinean los elementos flex a lo largo del eje transversal (perpendicular al eje principal).

  • stretch (por defecto): Los ítems se estiran para llenar el contenedor (si no tienen un alto definido).
  • flex-start: Los ítems se alinean al inicio del eje transversal.
  • flex-end: Los ítems se alinean al final del eje transversal.
  • center: Los ítems se centran en el eje transversal.
  • baseline: Los ítems se alinean según sus líneas base de texto.
.flex-container {
    display: flex;
    align-items: center; /* Centra los ítems verticalmente (si direction es row) */
}

d. flex-wrap: Salto de Línea

Controla si los elementos flex deben ajustarse (saltar a una nueva línea) si no caben en una sola línea del contenedor.

  • nowrap (por defecto): Todos los ítems intentan mantenerse en una sola línea, encogiéndose si es necesario.
  • wrap: Los ítems saltan a la siguiente línea si no hay espacio.
  • wrap-reverse: Los ítems saltan a la línea anterior (dirección inversa).
.flex-container {
    display: flex;
    flex-wrap: wrap; /* Permite que los ítems salten a la siguiente fila */
}

3. Propiedades de los Elementos Flex (Items)

Aunque la mayoría de las propiedades se aplican al contenedor, también puedes controlar el comportamiento individual de los elementos flex.

a. flex-grow: Permitir Crecer

Define la capacidad de un elemento para crecer si hay espacio disponible en el contenedor. Un valor de 1 (o más) permite que crezca; 0 (por defecto) no lo permite.

.flex-item-grow {
    flex-grow: 1; /* Este ítem ocupará el espacio restante */
}

b. flex-shrink: Permitir Encoger

Define la capacidad de un elemento para encogerse si no hay suficiente espacio en el contenedor. Un valor de 1 (por defecto) permite que se encoja; 0 no lo permite.

.flex-item-no-shrink {
    flex-shrink: 0; /* Este ítem no se encogerá */
}

c. flex-basis: Tamaño Base

Define el tamaño inicial de un elemento flex antes de que se distribuya el espacio restante. Puede ser un valor en píxeles, porcentaje, etc. (ej. 100px, 50%, auto).

.flex-item-half {
    flex-basis: 50%; /* Intentará ocupar la mitad del contenedor */
}

La propiedad abreviada flex combina flex-grow, flex-shrink y flex-basis (ej. flex: 1 1 auto;).

d. order: Reordenar Items

Controla el orden visual de los elementos flex, independientemente de su orden en el HTML. Un valor numérico; los ítems con un número más bajo aparecen primero. Por defecto es 0.

.flex-item-first {
    order: -1; /* Aparecerá primero */
}
.flex-item-last {
    order: 1; /* Aparecerá al final */
}

e. align-self: Alineación Individual en el Eje Transversal

Permite sobrescribir la propiedad align-items del contenedor para un elemento flex individual.

.flex-item-center {
    align-self: center; /* Este ítem se centrará verticalmente, independientemente del contenedor */
}

¡Manos a la Obra con Flexbox!

Abre el archivo flexbox-basico-explicacion.html en tu navegador y experimenta con los siguientes ejemplos. Puedes cambiar las propiedades CSS en tu style.css (o en la sección <style> de este mismo HTML para pruebas rápidas) y ver cómo afecta a los contenedores y sus ítems.

Ejemplo 1: Centrar Contenido Horizontalmente

Contenedor con justify-content: center;

Item A
Item B
Item C
.flex-container {
    display: flex;
    justify-content: center;
}

Ejemplo 2: Espacio entre Items y Wrap

Contenedor con justify-content: space-between; y flex-wrap: wrap;

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
.flex-container {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
}

Ejemplo 3: Columna y Alineación Vertical

Contenedor con flex-direction: column; y align-items: center;

Item A
Item B
Item C
.flex-container {
    display: flex;
    flex-direction: column;
    align-items: center;
}

Ejemplo 4: Ítem Creciendo y Orden Individual

Un ítem crecerá y otro cambiará de orden.

Item Reordenado 2
Item que Crece
Item Original 1
Item Reordenado 1
.flex-item.flex-grow-1 {
    flex-grow: 1;
}
.flex-item.order-minus-1 {
    order: -1;
}

¡Flexbox es una herramienta increíblemente versátil! Con estas propiedades, puedes crear diseños complejos para componentes individuales o secciones de tu página. Practica cambiando los valores y observa cómo los ítems se reorganizan.


Practica

Replica el siguiente ejemplo usando lo aprendido hasta ahora.
Es recomendable hacer la practica en una computadora de escritorio.
Observa que al cambiar el tamaño de la pantalla algunos elementos se ajustan.

Título principal

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!

Título

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Veniam possimus fuga repellendus dolorem eveniet laudantium reprehenderit aliquam, temporibus saepe nihil enim autem molestias blanditiis doloremque, aut culpa. Temporibus, commodi natus.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nihil aliquam, error praesentium ullam laborum, numquam a accusantium velit eligendi voluptates qui quia id. Earum, et ad. Ut quos unde amet.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quasi quisquam eveniet dolore pariatur quas iste minus ex consequuntur aliquam fugit voluptatem, incidunt repudiandae aliquid quae dignissimos at id soluta nam!