924 Stimmen

Wie kann ich Flexbox-Elemente zu 100 % der Höhe ihres Elternelements machen?

Ich versuche, den vertikalen Platz eines Flex-Elements innerhalb eines Flexbox auszufüllen.

.container {
  height: 200px;
  width: 500px;
  display: flex;
  flex-direction: row;
}
.flex-1 {
  width: 100px;
  background-color: blue;
}
.flex-2 {
  position: relative;
  flex: 1;
  background-color: red;
}
.flex-2-child {
  height: 100%;
  width: 100%;
  background-color: green;
}

Und hier ist der JSFiddle

flex-2-child füllt die erforderliche Höhe nicht aus, außer in den beiden Fällen, in denen:

  1. flex-2 eine Höhe von 100% hat (was seltsam ist, weil ein Flex-Element standardmäßig 100% hat + es in Chrome fehlerhaft ist)
  2. flex-2-child position:absolute hat, was auch unpraktisch ist

Dies funktioniert derzeit nicht in Chrome oder Firefox.

0 Stimmen

Was ist das Problem bei der Verwendung von height:100%; für .flex-2?

3 Stimmen

Es widersetzt sich dem Zweck des Flex-Elements, das den Inhalt von selbst füllen soll, und es bringt mir den seltsamsten Fehler in Chrome, wo die Höhe immer wieder auf null zurückgeht, wenn ich das Fenster neu dimensioniere

0 Stimmen

Firefox-Versionen, die immer noch der Spezifikation von 2009 (display: box) folgen, verhalten sich sehr unterschiedlich von Versionen, die der modernen Spezifikation folgen. Wenn FF sich schlecht verhält, würde ich empfehlen, die Unterstützung dafür einzustellen.

4voto

Wusstest du schon: Höhe-100% funktioniert im neuesten Chrome; aber nicht in Safari;


Also wäre die Lösung in Tailwind

"flex items-stretch"

https://tailwindcss.com/docs/align-items

und wird rekursiv auf das Kind des Kindes des Kindes angewendet ...

-8voto

HRK Punkte 17

.container { . . . . align-items: strecken; . . . . }

8 Stimmen

Willkommen bei Stackoverflow. Sie müssen Ihre Antwort ausführlich erklären und darlegen, was sie von den bestehenden Antworten unterscheidet. Siehe stackoverflow.com/help/how-to-answer

2 Stimmen

Ihre Antwort scheint die gleiche zu sein wie die von B T (vor über drei Jahren verfasst), jedoch viel schlechter ausgedrückt.

-14voto

Marco Allori Punkte 3064

Dies ist meine Lösung unter Verwendung von css+.

Zunächst einmal, wenn das erste Kind (flex-1) 100px sein soll, sollte es nicht flex sein.

In css+ können Sie tatsächlich flexible und/oder statische Elemente (Spalten oder Reihen) festlegen, und Ihr Beispiel wird so einfach wie folgt:

      100px
      flex

Container CSS:

.container {
    height: 200px;
    width: 500px;
    position: relative;
}

Und natürlich css+ 0.2 Kern einschließen.

Hier ist der Fiddle.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X