vue瀑布流插件vue-waterfall-easy 2.x

本文记录了如何在Vue项目中使用vue-waterfall-easy组件创建瀑布流布局。首先通过npm安装,然后引入组件并注册。在模板中设置插槽以显示图片及描述信息,并监听滚动到底部事件。数据通过axios获取,图片链接关键字必须为'src',并且使用自定义的Img类来存储数据。
摘要由CSDN通过智能技术生成

不知道大家都是怎么用瀑布流的,一开始尝试用flex布局失败,后面找到了这个组件,还是挺好用的,记录一下。
在这里插入图片描述
首先是用npm安装npm install vue-waterfall-easy --save-dev
然后用import引用

import vueWaterfallEasy from 'vue-waterfall-easy'
export default {
  name: 'app',
  components: {
    vueWaterfallEasy
  }
}

在部分我写的是,除了图片,下面还有一些描述信息,所以加了插槽,以及手动调用了取消滚动加载在这里插入图片描述
一定要记得在组件上加上ref='waterfall',否则会undefined的
在这里插入图片描述
在 slot-scope="props"的div里,可以自定义修改每个图片所需要的信息

            <vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getDataList" class="waterfull" ref='waterfall'>
                <div class="img-info" slot-scope="props">
                    <div class="user">
                        <span>{{props.value.name}}</span>
                        <span @click='imgLike(props.value.id,props.value.isDianZan)'>
                            <img
                                :src="props.value.isDianZan == 0 ? 'https://g-shot.oss-cn-hangzhou.aliyuncs.com/h5/28ac6d226cb5526e/img/6-32.png': 'https://g-shot.oss-cn-hangzhou.aliyuncs.com/h5/28ac6d226cb5526e/img/6-31.png'">
                        </span>
                    </div>
                </div>
                <div slot="waterfall-over">已经到底啦</div>
            </vue-waterfall-easy>

js部分:

import vueWaterfallEasy from './vue-waterfall-easy/vue-waterfall-easy.vue'
import axios from 'axios'

export default {
  name: 'app',
  data() {
    return {
      imgsArr: [],
      group: 0, // request param
    }
  },
  components: {
    vueWaterfallEasy
  },
  methods: {
    getData() {
      axios.get('./static/mock/data.json?group=' + this.group) // 真实环境中,后端会根据参数group返回新的图片数组,这里我用一个惊呆json文件模拟
        .then(res => {
          this.imgsArr = this.imgsArr.concat(res.data)
          this.group++
        })
    },
  },
  created() {
    this.getData()
  }
}

在这里插入图片描述
这里要注意,存图片链接的关键字必须是“src”,所以new了一个类来存所有从接口取到的要用到的值。

    export class Img {
        constructor({
            id,
            src,
            isDianZan,
            name
        }) {
            this.id = id
            this.src = src
            this.isDianZan = isDianZan
            this.name = name
        }
    }
    export function CreateImg(imgData) {
        return new Img({
            id: imgData.id,
            src: imgData.src,
            isDianZan: imgData.isDianZan,
            name: imgData.name
        })
    }
  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值