https://jsfiddle.net/vhem8scs/
¿Es posible tener dos elementos alineados a la izquierda y un elemento alineado a la derecha con flexbox? El enlace lo muestra más claramente. El último ejemplo es lo que quiero lograr.
En flexbox tengo un bloque de código. Con float tengo cuatro bloques de código. Esa es una razón por la que prefiero flexbox.
HTML
<div class="wrap">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
<!-- DESIRED RESULT -->
<div class="result">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
CSS
.wrap {
display: flex;
background: #ccc;
width: 100%;
justify-content: space-between;
}
.result {
background: #ccc;
margin-top: 20px;
}
.result:after {
content: '';
display: table;
clear: both;
}
.result div {
float: left;
}
.result div:last-child {
float: right;
}
Respuestas:
Para alinear un hijo flexible a la derecha, configúrelo con
margin-left: auto;
De la especificación flex :
Violín actualizado
Mostrar fragmento de código
Nota:
Puede lograr un efecto similar estableciendo flex-grow: 1 en el elemento flex del medio (o taquigrafía
flex:1
) que empujaría el último elemento completamente hacia la derecha. ( Demo )Sin embargo, la diferencia obvia es que el elemento central se hace más grande de lo que podría ser necesario. Agregue un borde a los elementos flexibles para ver la diferencia.
Manifestación
Mostrar fragmento de código
fuente
auto
margen utiliza el espacio vacío en el contenedor para separar los elementos flexibles. La propiedadflex-grow
/flex
toma ese espacio vacío, lo asigna al elemento flexible, que se expande en esa cantidad. Según lo mencionado por Danield, el último método hace que el elemento Flex DOS sea más grande, lo que quizás no desee.div:nth-last-child(4) { margin-left: auto }
esténPara una opción de Flexbox pura y concisa, agrupe los elementos alineados a la izquierda y los elementos alineados a la derecha:
y uso
space-between
:De esta manera, puede agrupar varios elementos a la derecha (o solo uno).
https://jsfiddle.net/c9mkewwv/3/
fuente
display: inline;
odisplay: inline-block;
, entonces se apilan en lugar de todos en una fila como flexbox de lo contrario los tendría.One
yTwo
dediv
s aspan
s: si todavíadisplay: block;
estuvieran, fluirían a líneas separadas. Dado que el OP originalmente teníadiv
s, solo quería señalar que simplemente ponerlos dentro de otrodiv
no funcionaría sin cambiar la visualización de las etiquetas originales.display: flex
ya no influye en su diseño. Si desea usar div, sí,inline
oinline-block
funcionaría. Pero también, obviamente,flex
ya que lo estamos usando por defectoflex-direction: row
con los padres primarios. ex. jsfiddle.net/ynbb5964/2Para alinear algunos elementos (headerElement) en el centro y el último elemento a la derecha (headerEnd).
fuente