将flexbox子项设置为具有不同的高度以占用可用空间

ver*_*esh 37 css css3 flexbox

使用两列flexbox布局,如何使不同大小的子项填充所有可用空间,而不是所有具有该行最高子级高度的子项?

我在jsbin上设置了一个说明问题的演示.我希望所有的孩子都能达到包装内容的大小.

#container {

 width: 800px;
  display: flex;
  flex-wrap: wrap;
}

.cell {
  width: 300px;
  flex; 1 auto;
}


<div id="container">

<div class="cell">
Cells with arbitrarily long content.</div>

<div class="cell">
</div>

<div class="cell">
</div>

<div class="cell">
</div>

<div class="cell">
</div>

</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

cim*_*non 41

这就是Flexbox行的行为方式.Flexbox并不意味着使用纯CSS重新创建Masonry:一行中的项不能占用为前一行/后一行分配的空间(如果使用列方向,则列相同).您可以使用align-items来阻止它们伸展,但这就是它:

http://cssdeck.com/labs/9s9rhrhl

#container {

 width: 800px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
}

.cell {
  width: 300px;
  flex: 1 auto;
  padding: 10px;
  border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

否则,您应该使用列方向或多列模块(请参阅此SO答案:https: //stackoverflow.com/a/20862961/1652962)

  • 关于[Mansory](http://masonry.desandro.com/)的评论也有很多帮助!至少有一个图书馆已经做了魔术.:) (4认同)
  • 谢谢.显式多列布局的问题在于,我认为不可能订购项目,使第二项位于第二列的顶部,而不是紧接第一列中第一项的下方.无论如何,看起来你是对的,我想要做的事情在纯CSS中是不可能的.谢谢! (3认同)