vue flex.css,Vue css js 多行多列实现

需求

需要实现一个循环来循环元素,每行4个元素

css flex

1.flex合并属性 flex: 1 0 50%;

1

2

3

4

2.基准属性flex-basis: 50%;

1

2

3

4

3.设置widthwidth: 50%;

1

2

3

4

export default {

data () {

return {

dataList: [

{ id: 1, name: 'F1' },

{ id: 2, name: 'F2' },

{ id: 3, name: 'F3' },

{ id: 4, name: 'F4' },

{ id: 5, name: 'F5' },

{ id: 6, name: 'F6' },

{ id: 7, name: 'F6' },

]

}

},

}

.flex-outer {

display: flex;

flex-wrap: wrap;

}

.flex-outer article {

background: limegreen;

border: 1px solid #eee;

box-sizing: border-box;

color: #fff;

padding: 15px;

}

/* flex合并属性 */

.flex-outer.flex-attr article {

flex: 1 0 50%;

}

/* flex-basis */

.flex-outer.flex-basis article {

flex-basis: 50%;

}

/* 设置width */

.flex-outer.width-attr article {

width: 50%;

}

pre {

display: flex;

justify-content: space-between;

}

自己实现

{{item.id}}

export default {

name: 'Test',

data () {

return {

dataList: [

{ id: 1, name: 'F1' },

{ id: 2, name: 'F2' },

{ id: 3, name: 'F3' },

{ id: 4, name: 'F4' },

{ id: 5, name: 'F5' },

{ id: 6, name: 'F6' },

{ id: 7, name: 'F6' },

]

}

},

}

.wrapper{

width: 100%;

height: auto;

display: flex;

justify-content: space-between;

flex-direction: row;

flex-wrap: wrap;

justify-content: left;

}

.wrapper-content{

width: 33%;

}

有些说css控制有时候不起作用,那么就需要js来控制

js 实现

e4330539f1dae5fb23960c323cd5e25d.png

{{item.id}}

{{dataList[index+1].id}}

export default {

data () {

return {

dataList: [

{ id: 1, name: 'F1' },

{ id: 2, name: 'F2' },

{ id: 3, name: 'F3' },

{ id: 4, name: 'F4' },

{ id: 5, name: 'F5' },

{ id: 6, name: 'F6' },

{ id: 7, name: 'F6' },

]

}

},

}

这种方式虽然可以实现数据换行,但是要写很多逻辑,而且要算好下标,感觉也不是很好

将一维数据转换成二维数组

{{cell.id}}

export default {

name: 'Test',

data () {

return {

dataList: [

{ id: 1, name: 'F1' },

{ id: 2, name: 'F2' },

{ id: 3, name: 'F3' },

{ id: 4, name: 'F4' },

{ id: 5, name: 'F5' },

{ id: 6, name: 'F6' },

{ id: 7, name: 'F6' },

]

}

},

computed: {

computedList() {

let index = 0;

let num = 4; // 每行几个元素

let arr = [];

for (let i=0; i

index = parseInt(i/num);

if (arr.length <= index) {

arr.push([]);

}

arr[index][i%num] = this.dataList[i];

}

console.log(arr)

return arr;

}

},

}

.wrapper{

width: 100%;

height: auto;

display: flex;

justify-content: space-between;

flex-direction: row;

flex-wrap: wrap;

}

.wrapper-content{

width: 33%;

}

这个一维数组转换二位数组算法可以优化,后续补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值