一个基于vue3的图片瀑布流组件

演示

请添加图片描述

介绍

基于vue3的瀑布流组件

演示地址: https://wanning-zhou.github.io/vue3-waterfall/

安装

npm

npm install wq-waterfall-vue3

yarn

yarn add wq-waterfall-vue3

pnpm

pnpm add wq-waterfall-vue3

使用

<template>
  <Waterfall :images="imageList">
    <template #item="{item}">
      <img style="width: 100%; height: 100%" :src="item.data.src"/>
    </template>
  </Waterfall>
</template>
<script setup lang="ts">
  import Waterfall from 'wq-waterfall-vue3'
  const imageList = ref([
    {src: '.....'},
    {src: '.....'}  
  ])
</script>

参数说明

props

参数说明类型默认值
images图片列表Array<Image>[]
columnCount列数number3
rowGap各行之间的间隙,单位 pxnumber20
columnGap各列之间的间隙,单位 pxnumber20
width瀑布流区域的总宽度,单位 pxstring | number100%
maxParallelTasks最大并行任务数number8
transitionClass图片过渡类名stringaterfall-transition
observerDelay监听瀑布流元素变化的延迟时间,单位 msnumber50
loadNum每次加载图片数量number8
showErrorImage是否显示加载失败的图片booleanfalse
errorImage加载失败的图片地址string默认加载错误图片
loadOverCallback图片加载完毕的回调函数()=>void()=>{}

最大并行任务数:当图片加载时,会开启多个任务,当任务数大于最大并行任务数时,会等待任务执行完毕后再开启新的任务,这样可以避免任务过多导致的卡顿
比如设置为16,当有17张图片加载时,会先加载16张图片,当这16张图片中的一张加载完毕后,会追加一个新的任务,以此类推,直到所有图片加载完毕

loadNum:每次加载图片数量,当最后加载的图片进入可视区域时,会自动加载下一批图片,loadNum就是每次加载的图片数量

expose

参数说明类型
updateWaterfall更新瀑布流()=>void
updateImagesPosition重新计算图片位置()=>void
height瀑布流区域的总高度,单位 pxnumber
loadedImages已加载的图片列表Array<ImageItem>

slot

名称参数说明类型
itemitem图片对象ImageItem

类型说明

Image

这里src是图片地址,里面也可以自定义其他属性,比如图片的id,图片的描述等等

export interface Image {
  src: string // 图片地址
}

ImageItem

export interface ImagesItem {
    data: Image // 图片信息
    // 图片地址
    url: string
    // 图片位置信息
    position: {
        width: number // 图片宽度
        height: number // 图片高度
        top: number // 图片距离顶部的距离
        left: number // 图片距离左边的距离
    },
    // 图片在images中的索引
    index: number
    // 图片是否加载完毕
    loaded: boolean
}

注意

当动态改变prop的 width rowGap columnGap columnCount 这些属性时,会自动重新计算瀑布流中图片的位置

当最大任务数不设置为1时,图片不是按照顺序渲染到瀑布流中,在任务队中先加载完的那张会优先渲染到瀑布流中, 当设置为1是图片会按照顺序渲染到瀑布流中

目前已经实现了类似图片的懒加载操作,当最后一批加载完成的图片进入可视区域时,会自动加载下一批图片

如果需要显示错误图片,需要设置 showErrorImagetrue,并设置 errorImage 为错误图片的地址

当传入的所有图片加载完成后,会触发 loadOverCallback 回调函数

Image数组可以从最后面追加图片,追加图片后,会自动更新瀑布流,不需要手动调用updateWaterfall方法
如果从数组头部或中间添加数据,或者是删除Image数组的的数据,需要手动调用updateWaterfall方法,更新瀑布流
调用updateWaterfall 会使图片从头开始重新加载,会导致Waterfall组件高度重新计算,如果父组件有滚动条,滚动条会回到顶部

最后

如果在使用过程中有任何问题, 欢迎联系我!!!

邮箱:zwn_fobj@foxmail.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值