Comment faire flexbox enfants de 100% de la hauteur de leur parent?

Je suis en train de remplir l'espace vertical d'un flex de l'élément à l'intérieur d'un flexbox.

CSS:

.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;
}

HTML:

<div class="container">
  <div class="flex-1"></div>
  <div class="flex-2">
    <div class="flex-2-child"></div>
  </div>
</div>

Et voici le JSFiddle

flex-2-child de ne pas remplir la hauteur requise, sauf dans les deux cas où:

  1. flex-2 a une hauteur de 100% (ce qui est bizarre, parce que d'un flex élément a 100% par défaut + il est bogué dans google Chrome)
  2. flex-2-child a une position absolue qui est aussi gênant

Cela ne fonctionne pas avec Chrome ou Firefox actuellement.

  • quel est le problème avec l'utilisation de height:100%; pour .flex-2 ?
  • Il défie le but de la flexion de l'élément qui est à remplir le contenu en lui-même et de me donner le plus étrange bug dans chrome où la hauteur revient à zéro à chaque fois que je redimensionner la fenêtre
  • Firefox versions qui suivent encore la spec à partir de 2009 (affichage: cocher) se comportent très différemment des versions qui suivent le moderne spec. Si FF est défaillante, je vous recommande d'enlever le support pour cela.
  • En fait, la dernière version de Firefox est le seul à travailler correctement
  • Actuellement, il existe d'importantes différences de comportement entre les navigateurs quand il s'agit de rendre pourcentage des hauteurs dans flexbox: stackoverflow.com/a/35537510/3597276
  • Yep, Chrome a certains problèmes, en particulier avec imbriqué flexboxes. Par exemple, j'ai un imbriquée flex zone avec des enfants qui ont height:100% mais ils sont rendu avec hauteur naturelle à la place. Et la chose étrange est que si je change leur hauteur à auto, alors qu'ils rendent height:100% comme j'ai essayé de faire. Ce n'est certainement pas intuitif si c'est la façon dont il devrait fonctionner.

InformationsquelleAutor Raz | 2013-03-13