justify-content y align-items
border: 5px solid green;
20px → Padding superior (top)
20px → Padding derecho (right)
0 → Padding inferior (bottom)
20px → Padding izquierdo (left)
La razón principal:
justify-content y align-items cambian su comportamiento según la dirección del eje principal.
Con flex-direction: row (por defecto):
Eje principal (main axis) → horizontal (x)
Eje transversal (cross axis) → vertical (y)
justify-content→ controla la alineación horizontalalign-items→ controla la alineación vertical
Con flex-direction: column:
Eje principal (main axis) → vertical (y)
Eje transversal (cross axis) → horizontal (x)
justify-content→ controla la alineación verticalalign-items→ controla la alineación horizontal
Visualmente:
/* Con row (por defecto) */ .container { display: flex; flex-direction: row; justify-content: center; /* ← Centra HORIZONTALMENTE */ align-items: center; /* ← Centra VERTICALMENTE */ } /* Con column */ .container { display: flex; flex-direction: column; justify-content: center; /* ← Centra VERTICALMENTE */ align-items: center; /* ← Centra HORIZONTALMENTE */ }
En tu caso específico:
.card { display: flex; flex-direction: column; /* Eje principal ahora es VERTICAL */ justify-content: center; /* Esto centra los elementos VERTICALMENTE */ /* Para centrar horizontalmente necesitas: */ align-items: center; /* Esto centra HORIZONTALMENTE */ }
Regla mnemotécnica para recordarlo:
justifysiempre trabaja en la dirección del texto (como en "justificar texto" en Word)Con
row: dirección del texto es horizontal →justify-contentcontrola horizontalCon
column: dirección del texto es vertical (como texto en columnas) →justify-contentcontrola vertical
¿Tiene sentido? Es como si el "eje principal" siempre sigue la dirección de la flexbox, y justify-content siempre trabaja en ese eje principal, mientras que align-items trabaja en el eje perpendicular.
Comentarios
Publicar un comentario