Tengo 2 divs uno al lado del otro en una caja flexible. El de la derecha siempre debe tener el mismo ancho, y quiero que el de la izquierda solo tome el espacio restante. Pero no lo hará a menos que establezca específicamente su ancho.
Entonces, en este momento, está configurado en 96%, lo que se ve bien hasta que realmente aplastas la pantalla, luego el div de la mano derecha se queda un poco hambriento del espacio que necesita.
Creo que podría dejarlo como está, pero se siente mal, como si tuviera que haber una manera de decir:
el correcto es siempre el mismo; a la izquierda, obtienes todo lo que queda
.ar-course-nav {
cursor: pointer;
padding: 8px 12px 8px 12px;
border-radius: 8px;
}
.ar-course-nav:hover {
background-color: rgba(0, 0, 0, 0.1);
}
<br/>
<br/>
<div class="ar-course-nav" style="display:flex; justify-content:space-between;">
<div style="width:96%;">
<div style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
<strong title="Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!">
Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!
</strong>
</div>
<div style="width:100%; display:flex; justify-content:space-between;">
<div style="color:#555555; margin-right:8px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;" title="A really really really really really really really really really really really long department name">
A really really really really really really really really really really really long department name
</div>
<div style="color:#555555; text-align:right; white-space:nowrap;">
Created: 21 September 2016
</div>
</div>
</div>
<div style="margin-left:8px;">
<strong>></strong>
</div>
</div>
flex-grow: 1
no estaba teniendo los mismos efectos queflex: 1
. ¿Quizás sabes por qué es diferente? (flex-grow: 1
, laflex-basis
propiedad permanece enauto
su valor predeterminado. Conflex: 1
, laflex-basis
propiedad cambia a0
. Vea mi respuesta aquí para una revisión en profundidad: stackoverflow.com/q/43520932/3597276 @WhGandalfBásicamente, estaba tratando de hacer que mi código tuviera una sección central en una 'fila' para autoajustarse al contenido en ambos lados (en mi caso, un separador de línea de puntos). Como sugirió @Michael_B, la clave se usa
display:flex
en el contenedor de la fila y al menos se asegura de que el contenedor del medio en la fila tenga unflex-grow
valor de al menos 1 más alto que los contenedores externos (si los contenedores externos no tienen ningunaflex-grow
propiedad aplicada, contenedor central solo necesita 1 paraflex-grow
).Aquí hay una foto de lo que estaba tratando de hacer y un código de muestra de cómo lo resolví.
Editar: el borde inferior punteado probablemente se verá extraño dependiendo de cómo lo muestre su navegador. Yo personalmente recomendaría usar un SVG de círculo negro como una imagen de fondo repetida, de tamaño adecuado y colocada en la parte inferior del contenedor central. Agregaré esta solución alternativa cuando tenga tiempo.
fuente