项目中有碰到一列 3 个及以上的 多行布局
设置 justify-content: space-between; 后 如果满格 就是正常显示,如果最后一行少1个就会出现 两头布局,影响美观。
做一个解决这种问题的样式
css
.position-view,.size-view{
width: 150upx;
margin: 10upx 0;
}
.size-view{
padding: 12upx;
font-size:28upx;
font-weight:400;
color:rgba(124,124,124,1);
line-height:40upx;
border: 1upx solid rgba(151,151,151,1);
border-radius:8px;
}
.position-view{
content: '';
}
样式很简单 就是一个 占位 的view
在盒子尾部 加上一个 占位 的view 循环次数 就是要循环数组的长度 / 你准备显示的列数,多少列都适用
<view class="position-view" v-for="indexs in (parseInt((sizeList.length+1)/4))" :key="indexs"></view>
<template>
<view>
<view class="main-view mar-t20 pad20">
<view class="flex-cb border-bot">
<view class="">尺寸</view>
<view class="">编辑</view>
</view>
<view class="size-list">
<view class="size-view flex-cc" v-for="(item,index) in sizeList" :key="item.name">
{
{item.name}}
</view>
<view class="size-view flex-cc" v-if="isadd">
<input type="text" value="" placeholder="输入" v-model="inputAdd"/>
</view>
<view class="size-view flex-cc" @tap="add">
新增
</view>
<view class="position-view" v-for="indexs in (parseInt((sizeList.length+1)/4))" :key="indexs"></view>
</view>
<view class="but-view flex-ca pad20" v-if="isadd">
<view class="flex-cc" @tap="addVal">
确定
</view>
<view class="flex-cc" @tap="closeAdd">
取消
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
sizeList:[
{id:1,name:'S'},
{id:2,name:'M'},
{id:3,name:'L'},
{id:4,name:'XL'},
{id:5,name:'XXL'},
{id:6,name:'3XL'},
{id:7,name:'4XL'},
{id:8,name:'5XL'},
],
isadd:false,
isdel:false,
inputAdd:'',
}
},
methods: {
add(e){
this.isadd = true;
},
addVal(e){
if(this.inputAdd != ''){
this.sizeList.push({id:this.sizeList.length,name:this.inputAdd})
}
this.inputAdd = '';
//this.isadd = false;
},
closeAdd(e){
this.inputAdd = '';
this.isadd = false;
}
}
}
</script>
<style>
.main-view{
background-color: #FFFFFF;
}
.size-list{
display: flex;
align-items: flex-start;
justify-content: space-between;
align-content: flex-start;
flex-wrap: wrap;
}
.position-view,.size-view{
width: 150upx;
margin: 10upx 0;
}
.size-view{
padding: 12upx;
font-size:28upx;
font-weight:400;
color:rgba(124,124,124,1);
line-height:40upx;
border: 1upx solid rgba(151,151,151,1);
border-radius:8px;
}
.position-view{
content: '';
}
.but-view view{
background-color: #007AFF;
color: #FFFFFF;
padding: 10upx;
border-radius: 20upx;
width: 200upx;
}
input{
font-size:28upx;
font-weight:400;
line-height:40upx;
text-align: center;
}
</style>