CSS Flexbox es un modelo de diseño que permite crear diseños de página más eficientes y alineados, especialmente cuando se trata de distribuir espacio entre elementos en un contenedor y alinear contenido. Flexbox es ideal para aplicaciones que requieren un diseño adaptable y flexible.
Conceptos Clave de Flexbox
- Contenedor Flex: El elemento padre que utiliza 
display: flex;para activar el modelo Flexbox. - Elementos Flex: Los elementos hijos directos del contenedor flex.
 - Eje Principal y Eje Secundario:
- Eje Principal: El eje principal es el eje a lo largo del cual se colocan los elementos flex. Por defecto, es horizontal.
 - Eje Secundario: El eje perpendicular al eje principal.
 
 
Propiedades del Contenedor Flex
- 
display: Activa el modo flex en un contenedor.
.container { display: flex; } - 
flex-direction: Define la dirección del eje principal.
row(por defecto): Los elementos se colocan de izquierda a derecha.row-reverse: Los elementos se colocan de derecha a izquierda.column: Los elementos se colocan de arriba a abajo.column-reverse: Los elementos se colocan de abajo a arriba.
.container { flex-direction: row; } - 
justify-content: Alinea los elementos a lo largo del eje principal.
flex-start: Alinea los elementos al inicio del contenedor.flex-end: Alinea los elementos al final del contenedor.center: Centra los elementos.space-between: Distribuye los elementos con espacio entre ellos.space-around: Distribuye los elementos con espacio alrededor de ellos.
.container { justify-content: space-between; } - 
align-items: Alinea los elementos a lo largo del eje secundario.
flex-start: Alinea los elementos al inicio del eje secundario.flex-end: Alinea los elementos al final del eje secundario.center: Centra los elementos en el eje secundario.baseline: Alinea los elementos según su línea base.stretch: Estira los elementos para llenar el contenedor.
.container { align-items: center; } - 
flex-wrap: Controla si los elementos deben ajustarse o no en una nueva línea.
nowrap(por defecto): Todos los elementos se colocan en una sola línea.wrap: Los elementos se ajustan en múltiples líneas.wrap-reverse: Los elementos se ajustan en múltiples líneas en orden inverso.
.container { flex-wrap: wrap; } 
Propiedades de los Elementos Flex
- 
flex-grow: Define la capacidad de un elemento para crecer si es necesario.
.item { flex-grow: 1; } - 
flex-shrink: Define la capacidad de un elemento para encogerse si es necesario.
.item { flex-shrink: 1; } - 
flex-basis: Define el tamaño inicial de un elemento antes de que el espacio extra se distribuya.
.item { flex-basis: 100px; } - 
align-self: Permite anular la alineación del eje secundario para un elemento específico.
.item { align-self: flex-end; } 
Ejemplo Práctico
Aquí tienes un ejemplo de cómo usar Flexbox para crear un diseño simple:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ejemplo de Flexbox</title>
    <style>
        .container {
            display: flex;
            flex-direction: row;
            justify-content: space-around;
            align-items: center;
            height: 100vh;
        }
        .item {
            background-color: #f0f0f0;
            padding: 20px;
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">Elemento 1</div>
        <div class="item">Elemento 2</div>
        <div class="item">Elemento 3</div>
    </div>
</body>
</html>Explicación del Código
- Contenedor Flex: 
.containeres el contenedor flex que utilizadisplay: flex;. - Dirección del Eje: 
flex-direction: row;coloca los elementos en una fila. - Justificación del Contenido: 
justify-content: space-around;distribuye los elementos con espacio alrededor. - Alineación de Elementos: 
align-items: center;centra los elementos verticalmente. 
Ejercicio Práctico
Ejercicio: Crea un diseño de galería de imágenes utilizando Flexbox donde las imágenes se ajusten automáticamente al tamaño del contenedor.
Solución:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Galería Flexbox</title>
    <style>
        .gallery {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }
        .gallery-item {
            flex: 1 1 200px;
            margin: 10px;
            background-color: #e0e0e0;
            height: 150px;
        }
    </style>
</head>
<body>
    <div class="gallery">
        <div class="gallery-item">Imagen 1</div>
        <div class="gallery-item">Imagen 2</div>
        <div class="gallery-item">Imagen 3</div>
        <div class="gallery-item">Imagen 4</div>
        <div class="gallery-item">Imagen 5</div>
    </div>
</body>
</html>Explicación del Ejercicio
- Flexibilidad de los Elementos: 
flex: 1 1 200px;permite que cada elemento crezca y se encoja, con un tamaño base de 200px. - Ajuste de Línea: 
flex-wrap: wrap;permite que los elementos se ajusten en múltiples líneas si es necesario. 
Conclusión
Flexbox es una herramienta poderosa para crear diseños responsivos y flexibles. Al dominar las propiedades de Flexbox, puedes crear interfaces de usuario que se adapten a diferentes tamaños de pantalla y dispositivos. En el siguiente módulo, exploraremos el diseño de cuadrícula CSS, que ofrece aún más control sobre el diseño de la página.
Curso de Diseño Responsivo
Módulo 1: Introducción al Diseño Responsivo
- ¿Qué es el Diseño Responsivo?
 - Historia e Importancia del Diseño Responsivo
 - Principios Básicos del Diseño Responsivo
 
Módulo 2: Fundamentos de HTML y CSS
Módulo 3: Consultas de Medios
- Comprendiendo las Consultas de Medios
 - Usando Consultas de Medios en CSS
 - Puntos de Ruptura y Diseños Responsivos
 
