此问题已在此处有答案:
Sizing flex items on the last row(10个答案)
六年前就关门了。
我在一个容器中有一个未知数量的元素,它们需要 Package ,外部没有边距,但它们之间的边距最小。
我还需要这些都是合理的space-between
和最后一行左对齐。
我试着用flexbox这样做:
.outside {
border: 1px solid black;
}
.container {
margin: -5px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.container:after {
content: '';
flex: auto;
}
.box {
background: red;
width: 50px;
height: 50px;
margin: 5px;
}
<div class="outside">
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
View JSFiddle
这是正确的,除了最后一行的间距是关闭的,正如你在屏幕截图中看到的:
如果我们不知道会有多少列,有没有什么方法可以让它工作(使用flexbox或其他东西而不是JavaScript)?
3条答案
按热度按时间pcrecxhr1#
最后一行对齐是flexbox的一个常见问题。
一种可以考虑的方法是在最后一个可见项之后使用不可见的Flex项。简而言之,我称它们为“跟踪幻影项”。
vfwfrxfs2#
Michael是对的,问题是你不能先做
space-between
,然后再选择最后一行为flex-start
。但对我来说突出的部分是指定的宽度。这很重要吗如果没有,通常的方法是使用媒体查询来控制每行显示多少项。您可以设置大量的媒体查询步骤,以确保项目不拉伸太多,但这样的空间之间更紧密地排队与您的正常网格排水沟,它使“最后一行问题”消失。你觉得这有用吗?
示例:http://codepen.io/anon/pen/JbpPKa
yduiuuwa3#
Stack Overflow不允许我对Michael_B的回答发表评论,但我确实想说明如何使用JavaScript来计算要追加的幻影元素的数量,以供任何试图解决这个问题的人使用。
在这种情况下: