Ejes en Flexbox: Eje Principal y Eje Secundario
📘 Introducción
Una de sus características clave es el uso de dos ejes de referencia: el eje principal (main axis) y el eje secundario (cross axis). Estos ejes definen cómo se colocan y alinean los elementos dentro del contenedor flex, y comprenderlos es esencial para dominar Flexbox.
🧱 1. ¿Qué son el Eje Principal y el Eje Secundario?
🔹 Eje Principal (main axis)
Es la dirección en la que se distribuyen los elementos hijos de un contenedor flex.
flex-direction: row→ horizontal (izquierda a derecha)flex-direction: row-reverse→ horizontal (derecha a izquierda)flex-direction: column→ vertical (de arriba hacia abajo)flex-direction: column-reverse→ vertical (de abajo hacia arriba)
🔍 Ejemplo básico:
.container {
display: flex;
flex-direction: row; /* Eje principal horizontal */
}
🔸 Eje Secundario (cross axis)
Es perpendicular al eje principal y define la dirección de alineación secundaria.
- Si el eje principal es horizontal (
row), el eje secundario será vertical. - Si el eje principal es vertical (
column), el eje secundario será horizontal.
🔍 Se controla con propiedades como align-items y align-content.
⚙️ 2. Propiedades Relacionadas con el Eje Principal
flex-direction: dirección del eje principal
.container {
display: flex;
flex-direction: row; /* Alternativas: column, row-reverse, column-reverse */
}
justify-content: distribución en el eje principal
.container {
display: flex;
justify-content: space-between; /* Otras opciones: flex-start, center, space-around, space-evenly */
}
💡 Ejemplo completo:
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
<style>
.container {
display: flex;
flex-direction: row;
justify-content: space-around;
border: 1px solid #000;
}
.item {
padding: 20px;
border: 1px solid red;
}
</style>
🧩 3. Propiedades del Eje Secundario
align-items: alineación de elementos en el eje secundario
Valores comunes:
flex-startcenterflex-endstretch(valor por defecto)baseline
🔍 Útil para centrar contenido verticalmente cuando flex-direction: row.
.container {
display: flex;
align-items: center;
height: 200px;
}
align-content: distribución entre líneas múltiples en el eje secundario
Aplica solo cuando hay varias filas o columnas, usando flex-wrap.
Valores comunes:
space-betweenspace-aroundstretchcenter
.container {
display: flex;
flex-wrap: wrap;
align-content: space-around;
height: 400px;
}
🧪 4. Ejemplo Combinado (Ambos Ejes en Acción)
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
<style>
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between; /* Distribución horizontal */
align-items: center; /* Alineación vertical de ítems */
align-content: space-around; /* Distribución entre líneas */
height: 500px;
border: 1px solid #000;
}
.item {
flex: 1 1 150px;
padding: 20px;
border: 1px solid red;
text-align: center;
}
</style>
🧠 Conclusión
Comprender los conceptos de eje principal y eje secundario en Flexbox es esencial para crear diseños precisos, responsivos y bien alineados. Mientras el eje principal organiza la dirección de los elementos (flex-direction y justify-content), el eje secundario permite controlar su alineación vertical u horizontal (align-items, align-content). Este enfoque es mucho más intuitivo y potente en comparación con el modelo tradicional de CSS.