Ich versuche, ein Flexbox-Layout mit drei Spalten einzurichten, wobei die linke und rechte Spalte eine feste Breite haben und die mittlere Spalte gebogen wird, um den verfügbaren Platz auszufüllen.
Obwohl die Abmessungen für die Spalten festgelegt wurden, scheinen sie beim Verkleinern des Fensters immer noch zu schrumpfen.
Weiß jemand, wie man das erreicht?
Eine zusätzliche Sache, die ich tun muss, ist das Ausblenden der rechten Spalte basierend auf der Benutzerinteraktion. In diesem Fall würde die linke Spalte ihre feste Breite beibehalten, aber die mittlere Spalte würde den Rest des Raums ausfüllen.
#container {
display: flex;
justify-content: space-around;
align-items: stretch;
max-width: 1200px;
}
.column.left {
width: 230px;
}
.column.right {
width: 230px;
border-left: 1px solid #eee;
}
.column.center {
border-left: 1px solid #eee;
}
<div id="container">
<div class="column left">
<p>Anxiety was a blog series that ran in the New York Times Opinion section from January 2012 to July 2013. It featured essays, fiction, and art by a wide range of contributors that explored anxiety from scientific, literary, and artistic perspectives.</p>
</div>
<div class="column center">
<img src="http://i.imgur.com/60PVLis.png" width="100" height="100" alt="">
</div>
<div class="column right">
Balint Zsako
<br/> Someone’s Knocking at My Door
<br/> 01.12.13
</div>
</div>
Hier ist eine JSFiddle: http://jsfiddle.net/zDd2g/185/
Antworten:
Anstatt zu verwenden
width
(was ein Vorschlag bei der Verwendung von Flexbox ist), können Sie Folgendes verwendenflex: 0 0 230px;
:0
= nicht wachsen (Abkürzung fürflex-grow
)0
= nicht schrumpfen (Abkürzung fürflex-shrink
)230px
= beginne bei230px
(Abkürzung fürflex-basis
)was bedeutet: immer sein
230px
.Siehe Geige , danke @TylerH
Oh, und du brauchst das
justify-content
undalign-items
hier nicht.quelle
flex-grow
definiert ist (wie z. B. 1). Geige aktualisiert .flex-grow: 1
wird in Chrome 53 noch für die Flüssigkeitssäule benötigt. Andernfalls würde der Rest der Breite nicht benötigt. Ich nehme an, die Antwort sollte diese Tatsache berücksichtigen.flex: 0 0 200px
verhält es sich genauso wiewidth: 200px; flex-shrink: 0
.Eine Grundeinstellung eines Flexcontainers ist
flex-shrink: 1
. Deshalb schrumpfen Ihre Spalten.Es spielt keine Rolle, welche Breite Sie angeben ( es könnte sein
width: 10000px
),flex-shrink
die angegebene Breite kann ignoriert werden und verhindert, dass Flex-Elemente den Container überlaufen.Sie müssen das Schrumpfen deaktivieren. Hier sind einige Optionen:
ODER
ODER, wie von der Spezifikation empfohlen:
Weitere Details hier: Was sind die Unterschiede zwischen Flex-Basis und Breite?
Versuche dies:
Dadurch kann die mittlere Spalte verfügbaren Speicherplatz belegen, einschließlich des Speicherplatzes ihrer Geschwister, wenn diese entfernt werden.
Überarbeitete Geige
quelle
flex: 1;
zum Zentrumdiv
war genug, danke.Die Kompatibilität mit älteren Browsern kann ein Problem sein.
Wenn das kein Problem ist, fahren Sie fort. Führen Sie das Snippet aus. Gehen Sie zur vollständigen Seitenansicht und ändern Sie die Größe. Das Center ändert seine Größe ohne Änderungen an den linken oder rechten Divs.
Ändern Sie die linken und rechten Werte, um Ihre Anforderungen zu erfüllen.
Vielen Dank.
Hoffe das hilft.
quelle