Ich habe 2 Divs nebeneinander in einer Flexbox. Die rechte Hand sollte immer die gleiche Breite haben, und ich möchte, dass die linke Hand nur den verbleibenden Platz einnimmt. Aber es wird nicht, wenn ich nicht speziell seine Breite eingestellt habe.
Im Moment ist es also auf 96% eingestellt, was in Ordnung aussieht, bis Sie den Bildschirm wirklich zerquetschen - dann wird der rechte Div ein wenig von dem Platz ausgehungert, den er benötigt.
Ich denke, ich könnte es so lassen, wie es ist, aber es fühlt sich falsch an - als müsste es einen Weg geben zu sagen:
der richtige ist immer der gleiche; Sie auf der linken Seite - Sie bekommen alles, was übrig ist
.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
hatte nicht die gleichen Auswirkungen wieflex: 1
. Weißt du vielleicht warum es anders ist? (Ich habe mein Problem mit letzterem behoben, danke)flex-grow: 1
dieflex-basis
Eigenschaft aufauto
ihrem Standardwert. Mit ändert sichflex: 1
dieflex-basis
Eigenschaft in0
. Siehe meine Antwort hier für eine eingehende Überprüfung: stackoverflow.com/q/43520932/3597276 @WhGandalfGrundsätzlich habe ich versucht, meinen Code so zu gestalten, dass er einen mittleren Abschnitt in einer 'Zeile' hat, um sich automatisch an den Inhalt auf beiden Seiten anzupassen (in meinem Fall ein Trennzeichen mit gepunkteten Linien). Wie von @Michael_B vorgeschlagen, wird der Schlüssel
display:flex
für den Zeilencontainer verwendet und stellt zumindest sicher, dass Ihr mittlerer Container in der Zeile einenflex-grow
Wert von mindestens 1 höher als die äußeren Container hat (wenn für äußere Container keineflex-grow
Eigenschaften angewendet wurden, mittlerer Container braucht nur 1 fürflex-grow
).Hier ist ein Bild von dem, was ich versucht habe, und ein Beispielcode für die Lösung.
Bearbeiten: Der gepunktete untere Rand sieht wahrscheinlich seltsam aus, je nachdem, wie Ihr Browser ihn anzeigt. Ich persönlich würde empfehlen, ein SVG mit schwarzem Kreis als wiederholtes Hintergrundbild zu verwenden, das die richtige Größe hat und am Boden des mittleren Containers positioniert ist. Füge diese alternative Lösung hinzu, wenn ich Zeit habe.
quelle