我在flexbox中有children元素。我希望它们能够响应,最大宽度为200px。它们的伸缩性很好,但由于最后一行的子对象少于其他行,问题是这些子对象的大小与其他行不同,显然,我希望所有子对象的维度都相同。
首先,我尝试使用网格,但随后我无法将最后一行中的子对象居中。所以这不是解决办法。
我还读到了一个类似的问题,答案是flexbox不可能实现。
既然javascript是最后一个选项,那么如何使用它呢?
.wrapper {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.item {
height: 50px;
flex: 30%;
max-width: 200px;
background: #ababab;
border: 2px solid #000;
}
<div class="wrapper">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
2条答案
按热度按时间watbbzwu1#
这就是你要找的吗?
移除
flex:30%
这是几个属性的简写,其中一个是flex-grow
. flex grow允许子项在需要时增长。而不是
justify-content: center;
我使用了默认值flex-start
; 所以他们从左边开始。你可以用justify-content:center
如果你觉得这样更好的话。3zwtqj6y2#
确定整行中弹性项的大小(大小
S
)如果最后一行的项数与整行的项数不同,请计算其中的项数(计数
N
)更新/替代项目的样式
N
最后一个项目的弹性项目数,以便它们具有大小S
.您还需要侦听“调整大小”事件,以重置屏幕上的样式
N
项目,并根据需要对新数量的项目重复样式更新。