Esta pregunta se refiere a un navegador con compatibilidad completa con css3, incluido flexbox.
Tengo un contenedor flexible con algunos artículos. Todos están justificados para flex-start pero quiero que el último .end
elemento esté justificado para flex-end. ¿Existe una buena forma de hacerlo sin modificar el HTML y sin recurrir al posicionamiento absoluto?
.container {
display: flex;
flex-direction: column;
outline: 1px solid green;
min-height: 400px;
width: 100px;
justify-content: flex-start;
}
p {
height: 50px;
background-color: blue;
margin: 5px;
}
<div class="container">
<p></p>
<p></p>
<p></p>
<p class="end"></p>
</div>
auto
ilustraciones de los márgenes aquí: stackoverflow.com/a/33856609/3597276Respuestas:
Por lo tanto, podría utilizar
margin-top: auto
para distribuir el espacio entre los otros elementos y el último elemento.Esto colocará el último elemento en la parte inferior.
p:last-of-type { margin-top: auto; }
Mostrar fragmento de código
.container { display: flex; flex-direction: column; border: 1px solid #000; min-height: 200px; width: 100px; } p { height: 30px; background-color: blue; margin: 5px; } p:last-of-type { margin-top: auto; }
<div class="container"> <p></p> <p></p> <p></p> </div>
Asimismo, también puede utilizar
margin-left: auto
omargin-right: auto
para la misma alineación horizontalmente.p:last-of-type { margin-left: auto; }
Mostrar fragmento de código
.container { display: flex; width: 100%; border: 1px solid #000; } p { height: 50px; width: 50px; background-color: blue; margin: 5px; } p:last-of-type { margin-left: auto; }
<div class="container"> <p></p> <p></p> <p></p> <p></p> </div>
fuente
margin: 0 auto
para el centrado horizontal. Los elementos de Flexbox respetan el margen, y creo quemargin: auto
eso esencialmente colocará el elemento con el mayor espacio posible entre el hermano. Ver: w3.org/TR/css-flexbox-1/#auto-marginsmargin: auto
en un elemento flexible le dice que cree tanto espacio como sea posible en esa dirección.Prior to alignment via justify-content and align-self, any positive free space is distributed to auto margins in that dimension.
Este principio de caja flexible también funciona horizontalmente
Durante los cálculos de las bases flexibles y las longitudes flexibles, los márgenes automáticos se tratan como 0.
Antes de la alineación a través de justificar contenido y alinearse a sí mismo, cualquier espacio libre positivo se distribuye a los márgenes automáticos en esa dimensión.
Establecer un margen izquierdo automático para el último elemento hará el trabajo.
.last-item { margin-left: auto; }
Ejemplo de código:
.container { display: flex; width: 400px; outline: 1px solid black; } p { height: 50px; width: 50px; margin: 5px; background-color: blue; } .last-item { margin-left: auto; }
<div class="container"> <p></p> <p></p> <p></p> <p class="last-item"></p> </div>
Fragmento de Codepen
Esto puede resultar muy útil para los pies de página de escritorio.
Como hizo Envato aquí con el logo de la empresa.
Fragmento de Codepen
fuente