Guía Completa de CSS Flexbox: Aprende a Diseñar con Flexibilidad
1. Contenedor y Elementos Flex
.contenedor {
display: flex;
}
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
.contenedor {
flex-direction: row;
}
justify-content: Alineación Horizontal
.contenedor {
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: flex-start;
justify-content: flex-end;
}
align-items: Alineación Vertical
.contenedor {
align-items: center;
align-items: stretch;
align-items: flex-start;
align-items: flex-end;
}
2. Ejemplo: Menú de Navegación Responsivo
<div class="menu">
<div class="item">Inicio</div>
<div class="item">Productos</div>
<div class="item">Contacto</div>
</div>
.menu {
display: flex;
justify-content: space-around;
background-color: #333;
color: white;
}
.item {
padding: 10px;
cursor: pointer;
}
3. Distribución de Tarjetas
<div class="tarjetas">
<div class="tarjeta">Tarjeta 1</div>
<div class="tarjeta">Tarjeta 2</div>
<div class="tarjeta">Tarjeta 3</div>
</div>
.tarjetas {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.tarjeta {
flex: 1;
background-color: #f0f0f0;
padding: 20px;
}
4. Centrado Absoluto
<div class="contenedor-centrado">
<div class="elemento-centrado">Centrado</div>
</div>
.contenedor-centrado {
display: flex;
justify-content: center;
align-items: center;
height: 300px;
background-color: #e0e0e0;
}
5. Propiedades de Elementos Flex
flex-grow: Crecimiento
flex-shrink: Reducción
.item {
flex-shrink: 0;
}
flex-basis: Tamaño Inicial
.item {
flex-basis: 200px;
}
6. Layout Complejo
<div class="layout">
<header>Header</header>
<nav>Menú</nav>
<main>Contenido Principal</main>
<footer>Footer</footer>
</div>
.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