Guía Completa de CSS Flexbox: Aprende a Diseñar con Flexibilidad

1. Contenedor y Elementos Flex


css
.contenedor {
display: flex; /* Activa flexbox */
}

Propiedades del Contenedor


flex-direction: Dirección de los elementos

  Dirección de los elementos

  • row: Horizontal (defecto)
  • row-reverse: Horizontal invertido
  • column: Vertical
  • column-reverse: Vertical invertido

css
.contenedor {
flex-direction: row; /* Elementos en línea horizontal */
}

justify-content: Alineación Horizontal

css
.contenedor {
justify-content: center; /* Centrado */
justify-content: space-between; /* Distribuye espacios */
justify-content: space-around; /* Espacios proporcionales */
justify-content: flex-start; /* Inicio */
justify-content: flex-end; /* Final */
}

align-items: Alineación Vertical

css
.contenedor {
align-items: center; /* Centrado verticalmente */
align-items: stretch; /* Estira elementos */
align-items: flex-start; /* Alineación superior */
align-items: flex-end; /* Alineación inferior */
}

2. Ejemplo: Menú de Navegación Responsivo


html
<div class="menu">
<div class="item">Inicio</div>
<div class="item">Productos</div>
<div class="item">Contacto</div>
</div>
css
.menu {
display: flex;
justify-content: space-around;
background-color: #333;
color: white;
}

.item {
padding: 10px;
cursor: pointer;
}

3. Distribución de Tarjetas


html
<div class="tarjetas">
<div class="tarjeta">Tarjeta 1</div>
<div class="tarjeta">Tarjeta 2</div>
<div class="tarjeta">Tarjeta 3</div>
</div>
css
.tarjetas {
display: flex;
gap: 20px; /* Espacio entre elementos */
flex-wrap: wrap; /* Ajuste automático */
}

.tarjeta {
flex: 1; /* Distribución proporcional */
background-color: #f0f0f0;
padding: 20px;
}

4. Centrado Absoluto


html
<div class="contenedor-centrado">
<div class="elemento-centrado">Centrado</div>
</div>
css
.contenedor-centrado {
display: flex;
justify-content: center;
align-items: center;
height: 300px;
background-color: #e0e0e0;
}

5. Propiedades de Elementos Flex


flex-grow: Crecimiento

css
.item {
flex-grow: 1; /* Crece proporcionalmente */
}

flex-shrink: Reducción

css
.item {
flex-shrink: 0; /* Evita reducción */
}

flex-basis: Tamaño Inicial

css
.item {
flex-basis: 200px; /* Tamaño base */
}

6. Layout Complejo


html
<div class="layout">
<header>Header</header>
<nav>Menú</nav>
<main>Contenido Principal</main>
<footer>Footer</footer>
</div>
css
.layout {
display: flex;
flex-direction: column;
height: 100vh;
}

header, footer {
flex: 0 0 60px;
}

.layout {
display: flex;
}

nav {
flex: 0 0 200px;
}

main {
flex: 1;
}
  Consejos Finales

  • Use flex-wrap para diseños responsivos
  • Combine propiedades para layouts complejos
  • Experimente con diferentes valores