【亲测有效】vue实现瀑布流效果,vue中使用vue-waterfall2来实现瀑布流效果

背景:使用了css,column原生写法和其他封装好的组件,要不就是排列的不整齐,要不就是无法实现滚动懒加载,最终找到最好的实现效果如下图

实现效果

vue中使用vue-waterfall2来实现瀑布流

操作流程

安装

使用npm安装vue-waterfall

 npm install vue-waterfall2@1.8.20 --save

项目内引用

在main.js文件中引用vue-waterfall

import waterfall from 'vue-waterfall2'
Vue.use(waterfall)

完整代码

vue html部分

<waterfall
      :col="col"---------col:划分几列,可以根据屏幕宽度来划分,其类型是数值型
      :gutterWidth="20"
      :data="list"        list:是请求到的每一页数据,由于分页,获取到的只有当前页数,因此列表循环的时候,使用List,即push上每一次page+1的数据
      @loadmore="loadmore"  当滑到页面底部后,需要加载新的数据
      :lazyDistance="200"
    >
      <template>
		写要展示内容
      </template>
    </waterfall>

vue js部分

根据屏幕尺寸设置显示列数

        getcol() {
            if (window.innerWidth > 1580) {
                this.col = 5;
            } else if (1024 < window.innerWidth < 1580) {
                this.col = 4;
            } else if (768 < window.innerWidth < 1024) {
                this.col = 3;
            }
        },

loadmore:监听当前页面加载完成-------------该页面使用了watch监听page,因此page++后未调取this.getdata();可根据需要自行调取

loadmore() {
      if (this.page <= this.length && this.loadmore) {
        this.page++;
      }
},

获取数据方法按自己项目写即可

if (this.page === 1) {
       this.List = [];
       setTimeout(() => {
         this.List = res.data.data;------------当时第一页时,将数据赋值给List
       }, 50);
     } else {
       this.List = this.List.concat(res.data.data);----------当页码大于第一页时,List拼接到后面的数组
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G佳伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值