Flexbox: Contenedor, Ejes y flex-direction
Aprende el modelo de maquetación unidimensional con Flexbox: activación con display: flex, comprensión del eje principal y secundario, flex-direction y control de líneas con flex-wrap.
¿Qué es Flexbox (Flexible Box Layout)?
Flexbox es el sistema estándar de CSS3 diseñado para distribuir el espacio y alinear elementos a lo largo de una sola dimensión (sea en fila horizontal o en columna vertical).
Para activar el entorno flexible basta con declarar en el contenedor padre:
.contenedor-flex {
display: flex; /* Convierte al elemento en un contenedor flex y a sus hijos directos en flex items */
}
Los Dos Ejes Fundamentales de Flexbox
Todo en Flexbox se rige según dos ejes ortogonales:
- Eje Principal (Main Axis): Es la dirección en la que fluyen los elementos. Se define mediante la propiedad
flex-direction. - Eje Cruzado/Secundario (Cross Axis): Es el eje perpendicular al eje principal (si el principal es horizontal, el secundario es vertical).
Diagrama 13.1: Relación entre el Eje Principal (Main Axis), Eje Cruzado (Cross Axis) e inversión de roles con flex-direction: column.
Propiedades del Contenedor: Dirección y Salto de Línea
| Propiedad | Valores | Efecto |
|---|---|---|
flex-direction |
row (defecto), row-reverse, column, column-reverse |
Establece el eje principal: horizontal (fila) o vertical (columna). |
flex-wrap |
nowrap (defecto), wrap, wrap-reverse |
Determina si los elementos se apiñan en una sola línea o si saltan a nuevas líneas al faltar espacio. |
flex-flow |
Shorthand: flex-flow: row wrap; |
Combina flex-direction y flex-wrap en una sola regla. |
⚡ Explorador Interactivo de Ejes Flexbox
Haz clic en los botones para alternar entre flex-direction: row y column, o activar el salto de línea con flex-wrap: wrap en tiempo real:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Flexbox: Contenedor y Ejes</title>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f8fafc;
margin: 0;
padding: 25px;
color: #0f172a;
}
/* Contenedor flexible */
.caja-padre {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
gap: 12px;
background-color: #e2e8f0;
padding: 16px;
border-radius: 12px;
min-height: 120px;
transition: all 0.3s ease;
margin-bottom: 20px;
}
/* Elementos hijos flexibles (Flex Items) */
.item-flex {
background: linear-gradient(135deg, #0284c7, #2563eb);
color: white;
padding: 16px 20px;
border-radius: 8px;
font-weight: bold;
text-align: center;
min-width: 90px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.btn-control {
background: #0f172a;
color: white;
border: none;
padding: 8px 14px;
border-radius: 6px;
cursor: pointer;
font-size: 0.85rem;
font-weight: 600;
margin-right: 6px;
margin-bottom: 6px;
}
</style>
</head>
<body>
<h3>Contenedor Flexible (display: flex)</h3>
<div id="contenedorFlex" class="caja-padre">
<div class="item-flex">1. HTML5</div>
<div class="item-flex">2. CSS3</div>
<div class="item-flex">3. JavaScript</div>
<div class="item-flex">4. PHP 8.3</div>
<div class="item-flex">5. MySQL</div>
</div>
<div>
<strong>Cambiar Dirección:</strong><br>
<button class="btn-control" onclick="setDirection('row')">Fila (row)</button>
<button class="btn-control" onclick="setDirection('column')">Columna (column)</button>
<button class="btn-control" onclick="setDirection('row-reverse')">Fila Invertida (row-reverse)</button>
<button class="btn-control" style="background:#2563eb;" onclick="toggleWrap()">Alternar Wrap (Salto de línea)</button>
</div>
<script>
const box = document.getElementById('contenedorFlex');
function setDirection(dir) {
box.style.flexDirection = dir;
}
function toggleWrap() {
box.style.flexWrap = (box.style.flexWrap === 'wrap') ? 'nowrap' : 'wrap';
}
</script>
</body>
</html>
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lecciónSi aplicas flex-direction: column a un contenedor flex, ¿cuál propiedad se encarga de alinear los elementos en el eje horizontal?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de CSS3, Flexbox y Grid y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.