Breite bei Flexbox-Elementen ignoriert


76

http://jsfiddle.net/XW9Se/

Ich habe width: 200px;links eingestellt, <div>aber wenn ich es mit dem Browser-Inspektor-Tool ansehe, scheint die tatsächliche Breite zufällig zu sein oder so. Es ändert sich ständig je nach Fenstergröße.

Warum wird die Breite nicht wirksam?

BEARBEITEN : Wenn ich entferne, width: 100%bleibt die Breite fest. Aber ich brauche das, damit das #maindiv die verbleibende Breite annimmt :( Gibt es eine Möglichkeit, die Seitenleiste bei fester Breite zu haben und die andere <div>den Rest der Containerbreite auszufüllen? width: auto;On #mainfunktioniert nicht.


2
Ist das nicht die ganze Idee einer Flexbox, die sich beim Ändern der Fenstergröße ändert?
Gpgekko

2
Ja, aber ich möchte nur, dass 1 Flex-Säule die Breite ändert: P
Alex

1
Versuchen Sie flex-flow: wrap;, dem Container
hinzuzufügen

1
fyi: Flex-Shrink ist standardmäßig 1
Hayden Thring

Antworten:


13

Entfernen Sie die Breite auf .container > divund verwenden Sie flex: auto;auf #main: Geige

#main {
   flex: auto; 
   background: lightblue; 
  -webkit-order: 2;
   order: 2;     
}

172

Die Antwort von Adrift ist perfekt; aber eine Änderung, um es flexibler zu machen, wäre

#left{
    flex-basis: 200px;
    flex-grow: 0;
    flex-shrink: 0;
}

Und entfernen Sie die Eigenschaft width vollständig.

Es wäre die flexible Art zu sagen, dass das Element eine unveränderliche Breite von 200px haben wird


42
Kurzschrift:flex: 0 0 200px;
Dan

20
Fügen Sie einfach eine flex-shrink: 0Eigenschaft hinzu, und die CSS-Breite wird berücksichtigt.
Ashish Rawat

Dies zusammen mit order: 2(um es nach rechts zu schalten) funktionierte einwandfrei, um eine Seitenwand zu erstellen. Vielen Dank!
Robert Molina

1
Ich wollte nur hinzufügen, dass ich nur flex-shrink: 0mein persönliches Problem beheben musste (wo es flex: autoallein nicht behoben wurde)
Jawad

18

Meine bevorzugte Art, mit dieser Situation umzugehen, besteht darin, Folgendes hinzuzufügen:

flex-shrink: 0;

Auf diese Weise können Sie die Verwendung widthin Ihrem Flex-Container fortsetzen und ihm spezifische Informationen darüber geben, wie sich dieses Flex-Element verhalten soll.

Eine weitere Option, abhängig von der Anforderung, ist die Verwendung min-width, die bei der Verwendung von Flex berücksichtigt wird .


7

Geben Sie dem #leftdiv ein min-widthvon 200px, sollte den Job machen.


0

display: contentsFügen Sie das Element oder div hinzu, für das Sie die Breite beibehalten möchten.


0

Auch (wenn nichts von oben funktioniert)

Überprüfen Sie Ihre minimale und maximale Breite . Es hat das gleiche Problem für mich behoben, indem ich ihre Reichweite vergrößert habe.


-4

display:inline-block;In der linken Klasse hinzufügen


1
Das OP verwendet jedoch Flex :)
Gavin
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.