flex 布局两端对齐当最后一排数量不够时,会出现以下布局情况
原图
flex 布局两端对齐
实现效果
flex 布局两端对齐

方案1:父级添加after伪类法,解决最后一排数量不够两端分布的情况
html:

1
2
3
<div class="tem-flex">
<div class="tem-list" v-for="item in len">列表</div>
</div>
1
2
3
4
5
data(){
return {
len : 14
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.tem-flex{
display: flex;
flex-wrap: wrap;
justify-content:space-between;
text-align: justify;
}
<!--加上after伪类,解决最后一排数量不够两端分布的情况-->
.tem-flex:after{
content: '';
width: 30%;
border:1px solid transparent;
}
.tem-list{
width:30%;
border:1px solid #ff6600;
margin-bottom: 10px;
}

完美解决两端对齐布局混乱的情况

当然,这种解决方案只适合每列有3个的分布情况,如果布局每列有4个,5个,可参考方案2
方案2:补位添加节点法,这种方案适用于多种排列方式
原图
flex 布局两端对齐
实现效果
flex 布局两端对齐

1
2
3
4
<div class="tem-flex">
<div class="tem-list" v-for="item in len">列表</div>
<div class="list" v-for="item in (row-len%row)" v-if="len%row > 0"></div>
</div>
1
2
3
4
5
6
data(){
return {
len : 14,
row: 4
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.tem-flex{
display: flex;
flex-wrap: wrap;
justify-content:space-between;
justify-items: center;
text-align: justify;
}
.list{
content: '';
width: 20%;
border:1px solid transparent;
padding: 5px;
overflow: hidden;
}
.tem-list{
width:20%;
border:1px solid #ff6600;
margin-bottom: 10px;
padding: 10px 5px;
display: flex;
justify-content: center;
}

这里的 row 即是每列元素的个数,4列,5列。。。更改这个值即可