Tengo dos elementos dentro de un contenedor, que están uno al lado del otro mediante el uso de caja flexible. En el segundo elemento ( .flexbox-2
), estoy configurando su altura en el CSS. Sin embargo, el primer elemento ( .flexbox-1
) coincidirá con la altura de .flexbox-2
. ¿Cómo dejaría .flexbox-1
de igualar la altura de .flexbox-2
y, en cambio, simplemente conservaría su altura natural?
Esto es lo que tengo hasta ahora (también disponible como jsFiddle )
.container {
display: -webkit-flex;
-webkit-flex-direction: row;
}
.flexbox-1 {
-webkit-flex: 1;
border: solid 3px red;
}
.flexbox-2 {
-webkit-flex: 2;
border: solid 3px blue;
height: 200px;
margin-left: 10px;
}
<div class="container">
<div class="flexbox-1">.flexbox-1</div>
<div class="flexbox-2">.flexbox-2</div>
</div>
Respuestas:
Siempre que el contenedor flexible no tenga altura en sí mismo , puede establecer
height: 0%
el primer elemento flexible. Debido a que no tiene altura para heredar de su padre, cualquier altura porcentual hará que colapse. Luego crecerá con su contenido.Ejemplo
En este ejemplo, eliminé el
-webkit
prefijo. Solo es realmente necesario para Safari y el prefijo se puede agregar encima de la versión sin prefijo. También eliminéflex-direction: row
ya que es el valor predeterminado.Mostrar fragmento de código
.container { display: flex; } .flexbox-1 { flex: 1; height: 0%; border: solid 3px red; } .flexbox-2 { flex: 2; border: solid 3px blue; height: 200px; margin-left: 10px; }
<div class="container"> <div class="flexbox-1">.flexbox-1</div> <div class="flexbox-2">.flexbox-2</div> </div>
fuente
Sé que esta es una pregunta antigua, pero una mejor solución es configurar el elemento flexible para alinearlo con la parte superior usando
flex-start
./* Default Styles */ .container { display: flex; } .flexbox-2 { flex: 2; border: solid 3px blue; height: 200px; margin-left: 10px; } .flexbox-1 { flex: 1; align-self: flex-start; border: solid 3px red; }
<div class="container"> <div class="flexbox-1">"align-self: flex-start;"</div> <div class="flexbox-2">.flexbox-2</div> </div>
fuente
align-items: center, baseline, flex-start, flex-end
también funcionanalign-items
esstretch
.Configurar el
height
de los niños enmax-content
evitará que se encojan..container { display: -webkit-flex; -webkit-flex-direction: row; } .flexbox-1 { -webkit-flex: 1; border: solid 3px red; height: max-content; } .flexbox-2 { -webkit-flex: 2; border: solid 3px blue; height: 200px; margin-left: 10px; }
<div class="container"> <div class="flexbox-1">.flexbox-1</div> <div class="flexbox-2">.flexbox-2</div> </div>
fuente
Puede solucionarlo fácilmente agregando a los elementos de alineación principales : flex-start;
Eso es todo
fuente