vue3.0 + vue-waterfall2:瀑布流布局

1、地址

https://www.npmjs.com/package/vue-waterfall2

2、下载

npm install vue-waterfall2@2.x --save
这样可以下载 2.0以上版本
这里需要注意 Vue2 用1.0的版本,Vue3用2.0的版本

在这里插入图片描述

3、vue3.0项目中应用

3.1 mian.js

import waterfall from 'vue-waterfall2';
app.use(waterfall);

3.2 组件

<template>
	<waterfall :col="col" :data="waterFall" @loadmore="loadMore" :gutterWidth="10">
	  <div
	    class="cell-item"
	    v-for="(item, index) in waterFall"
	    :key="index"
	    @click="() => handleClick(index)"
	  >
	    <img v-if="item.img" :src="item.img" alt="加载错误" />
	       <div class="item-body">
				这里可以加一些图片描述
	       </div>
	  </div>
	</waterfall>
</template>
<style lang="scss">
.cell-item {
  width: 100%;
  // margin-bottom: 18px;
  background: #ffffff;
  border: 2px solid #f0f0f0;
  border-radius: 12px;
  overflow: hidden;
  box-sizing: border-box;
  margin-bottom: 10px;
  img {
    // border-radius: 12px 12px 0 0;
    width: 100%;
    height: auto;
    display: block;
  }
}
</style>
<script>
const waterFall = ref([]);
const waterFallList = ref([
  {
    img: "https://image.watsons.com.cn//upload/8a316140.png?w=377&h=451&x-oss-process=image/resize,w_1080",
  },
  {
    img: "https://image.watsons.com.cn//upload/083767f0.JPG?w=828&h=620&x-oss-process=image/resize,w_1080",
  },
  {
    img: "https://image.watsons.com.cn//upload/083767f0.JPG?w=828&h=620&x-oss-process=image/resize,w_1080",
  },
  {
    img: "https://image.watsons.com.cn//upload/02a4f38d.jpg?w=1067&h=1067&x-oss-process=image/resize,w_1080",
  },
  {
    img: "https://image.watsons.com.cn//upload/589585c1.jpeg?x-oss-process=image/resize,w_1080",
  },
  {
    img: "https://image.watsons.com.cn//upload/d862d932.jpg?w=1080&h=1440&x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/eb4fb58f.jpg?w=1080&h=1080&x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/71d19462.jpg?x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/8a316140.png?w=377&h=451&x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/083767f0.JPG?w=828&h=620&x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/02a4f38d.jpg?w=1067&h=1067&x-oss-process=image/resize,w_1080"
  },
  {
    img: "https://image.watsons.com.cn//upload/589585c1.jpeg?x-oss-process=image/resize,w_1080"
  }
]);
const loadMore = () => {
  loadTip.value = '加载中……';
  setTimeout(() => {
    waterFall.value = Array.from(waterFall.value.concat(waterFallList.value));
    loadTip.value = '加载更多';
  }, 1000);
};
loadMore();

// --------------滚动监听-----------------------
const scrollFun = () => {
  const SELECTWRAP: any = document.querySelector('.o-scroller-container')
  if (SELECTWRAP) {
    const handleScroll = function () {
      if (loadTip.value === '到底了……') {
        return;
      }
      const CONDITION = SELECTWRAP.scrollHeight - Math.ceil(SELECTWRAP.scrollTop) <= SELECTWRAP.clientHeight
      if (CONDITION && SELECTWRAP.scrollTop !== 0) {
        loadMore();
      }
    }
    SELECTWRAP.addEventListener('scroll', handleScroll);
  }
}

onMounted(() => {
  scrollFun();
})
</script>

这里两点需要注意:
1、样式不能加 scoped
2、滚动事件需要自己加,我这个写法基本够用,加到能滚动的盒子上就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值