J'ai 2 divs côte à côte dans une flexbox. Celui de droite doit toujours avoir la même largeur, et je veux que celui de gauche saisisse simplement l'espace restant. Mais ce ne sera pas le cas, sauf si j'ai défini spécifiquement sa largeur.
Donc, pour le moment, il est réglé à 96%, ce qui semble correct jusqu'à ce que vous écrasiez vraiment l'écran - puis le div de droite devient un peu affamé de l'espace dont il a besoin.
Je suppose que je pourrais le laisser tel quel, mais ça ne va pas - comme s'il devait y avoir un moyen de dire:
la bonne est toujours la même; vous à gauche - vous obtenez tout ce qui reste
.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
n'a pas eu les mêmes effets queflex: 1
. Savez-vous peut-être pourquoi c'est différent? (J'ai résolu mon problème avec ce dernier, thx)flex-grow: 1
, laflex-basis
propriété reste àauto
sa valeur par défaut. Avecflex: 1
, laflex-basis
propriété devient0
. Voir ma réponse ici pour un examen approfondi: stackoverflow.com/q/43520932/3597276 @WhGandalfFondamentalement, j'essayais d'obtenir que mon code ait une section centrale sur une «ligne» pour s'ajuster automatiquement au contenu des deux côtés (dans mon cas, un séparateur de ligne pointillée). Comme l'a suggéré @Michael_B, la clé utilise
display:flex
sur le conteneur de ligne et s'assure au moins que votre conteneur du milieu sur la ligne a uneflex-grow
valeur d'au moins 1 supérieure aux conteneurs externes (si les conteneurs externes n'ont aucuneflex-grow
propriété appliquée, conteneur du milieu n'a besoin que de 1 pourflex-grow
).Voici une photo de ce que j'essayais de faire et un exemple de code pour savoir comment je l'ai résolu.
Modifier: la bordure inférieure en pointillés sera probablement bizarre selon la façon dont votre navigateur l'affiche. Je recommanderais personnellement d'utiliser un SVG de cercle noir comme image d'arrière-plan répétée, correctement dimensionné et positionné au fond du conteneur du milieu. Ajoutera cette solution alternative lorsque j'aurai le temps.
la source