Verhindern Sie das Schrumpfen der Flexbox


74

Ich verwende Flexbox, um eine Seite zu gestalten, da das wachsende Verhalten nützlich ist. Aber ich möchte das Schrumpfverhalten vollständig verhindern .

Wie auch immer, um das zu schaffen?

Beispielcode:

<div class="flex-vertical-container">
    <div class="flex-box">
         This one should grow but not shrink
    </div>
    <div></div>
    <div></div>
</div>

CSS

.flex-vertical-container {
    display: flex;
    flex-direction: column;
}

.flex-box {
    flex: 1;
}

Antworten:


129

Versuchen Sie, die flex-shrinkEigenschaft auf 0zu setzen .flex-box.


Aus irgendeinem Grund flex-shrink: 0;funktionierte die Einstellung nicht, aber die manuelle Einstellung: flex-shrink: 1 0 auto;funktionierte gut ...
— Simon Boudrias

2
Flex-Shrink: 1 0 Auto; scheint keine gültige Eigenschaft zu sein.
— Ashish Ranjan

8
sie meinten wahrscheinlichflex: 1 0 auto;
— Ryan Taylor

2
Es scheint, dass die Einstellung 0 für die Flex-Shrink-Eigenschaft in diesem speziellen Fall nicht ausreicht. Wenn flex-direction:columnSie mit arbeiten , müssen Sie auch einen min-widthWert festlegen , um dieses Ziel zu erreichen.
— Klewis

Ich habe ungefähr eine Stunde damit verbracht herauszufinden, warum meine Karten früher schrumpften ... Möge Gott Sie für Ihre gute Arbeit segnen !!
— Shardul Birje

32

Fügen Sie a min-widthmit dem gewünschten Wert der Box hinzu. Flexbox verkleinert die Breite nicht unter die Mindestbreite.


1
Die Mindestbreite funktioniert einwandfrei, passt sich jedoch im reaktionsschnellen Design nicht an den Abstand an, wenn er kleiner als der angegebene Wert ist. Flex-Shrink funktioniert bei mir allerdings überhaupt nicht.
— Ashish Ranjan

Außerdem verwendet Safari weiterhin die Eigenschaft min-width für das Flexbox-Verhalten, was zu seltsamen browserübergreifenden Problemen zwischen IE - Safari und "dem Rest" führt. Überprüfen Sie die Hinweise auf kann ich verwenden: caniuse.com/#search=flexbox
— Silom

4

Sie können versuchen, sich bei dem Kind zu bewerben:

.flex-box{
    width: max-content;
}

Endergebnis:

.flex-vertical-container{
  display: flex;
  flex-direction: column;
}
.flex-vertical-container div{
  background: gray;
}
.flex-box{
  width: max-content;
}
<div class="flex-vertical-container">
    <div class="flex-box">
         This one should grow but not shrink
    </div>
    <div>This is shrinking</div>
    <div>This is shrinking</div>
</div>



1
Wenn Sie nicht auf einen bestimmten Browser abzielen, ist max-contentdies keine gute universelle Wahl.
— Klewis

Wird von IE und Edge nicht unterstützt. Unterstützt von Chrome, Safari und Firefox. caniuse.com/#search=max-content
— Erik Martín Jordán

0

Wenn Sie es wie ich flex-directionsind row, versuchen Sie, die Breite des Kindes auf 100% einzustellen. Das hat das Schrumpfen für mich behoben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.