当前位置: 首页 > news >正文

一个基于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

相关文章:

  • 网站是哪个建站公司做的seo网站内部优化
  • 石家庄网站建设费用seo优化包括什么
  • 网站开发建设需要什么腾讯朋友圈广告投放价格
  • 襄阳网站建设培训网络推广
  • 做花茶的网站今日油价92汽油价格调整最新消息
  • 做淘宝客网站难吗seo01网站
  • FFmpeg av_read_frame 和iOS系统提供的 AVAudioRecorder 实现音频录制的区别
  • redis开启过期监听
  • 《CWAP-404》,第一章:802.11 协议(1.1~1.3)
  • 搭建gn环境踩坑存档
  • 网络原理---TCP/IP
  • Windows对比MacOS
  • 头歌实验---C/C++程序设计:实验三:选择结构程序设计进阶
  • <Revit二次开发>详细介绍Autodesk.Revit.DB.HostObject类的FindInserts 方法
  • Java 大视界 —— Java 大数据在智慧能源微电网能量管理中的关键技术(100)
  • TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具
  • 如何在 WPS 中集成 DeepSeek
  • 工程化与框架系列(11)--Serverless实践
  • ES、OAS、ERP、电子政务、企业信息化(高软35)
  • 卷积神经网络梯度下降方向与参数更新方向的一致性论述
  • 隐蔽多客户端上网的 Linux 服务器配置指南
  • Ubuntu22.04安装docker教程
  • 自然语言处理基础
  • Hunyuan3D-2 本地部署教程:大规模 3D 资产创作系统,快速生成高保真3D模型!
  • Android -- 使用Sharepreference保存List储存失败,原因是包含Bitmap,drawable等类型数据
  • 前端各大框架路由跳转