一个基于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 | 列数 | number | 3 |
rowGap | 各行之间的间隙,单位 px | number | 20 |
columnGap | 各列之间的间隙,单位 px | number | 20 |
width | 瀑布流区域的总宽度,单位 px | string | number | 100% |
maxParallelTasks | 最大并行任务数 | number | 8 |
transitionClass | 图片过渡类名 | string | aterfall-transition |
observerDelay | 监听瀑布流元素变化的延迟时间,单位 ms | number | 50 |
loadNum | 每次加载图片数量 | number | 8 |
showErrorImage | 是否显示加载失败的图片 | boolean | false |
errorImage | 加载失败的图片地址 | string | 默认加载错误图片 |
loadOverCallback | 图片加载完毕的回调函数 | ()=>void | ()=>{} |
最大并行任务数:当图片加载时,会开启多个任务,当任务数大于最大并行任务数时,会等待任务执行完毕后再开启新的任务,这样可以避免任务过多导致的卡顿
比如设置为16,当有17张图片加载时,会先加载16张图片,当这16张图片中的一张加载完毕后,会追加一个新的任务,以此类推,直到所有图片加载完毕
loadNum:每次加载图片数量,当最后加载的图片进入可视区域时,会自动加载下一批图片,loadNum就是每次加载的图片数量
expose
| 参数 | 说明 | 类型 |
|---|---|---|
updateWaterfall | 更新瀑布流 | ()=>void |
updateImagesPosition | 重新计算图片位置 | ()=>void |
height | 瀑布流区域的总高度,单位 px | number |
loadedImages | 已加载的图片列表 | Array<ImageItem> |
slot
| 名称 | 参数 | 说明 | 类型 |
|---|---|---|---|
| item | item | 图片对象 | 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是图片会按照顺序渲染到瀑布流中
目前已经实现了类似图片的懒加载操作,当最后一批加载完成的图片进入可视区域时,会自动加载下一批图片
如果需要显示错误图片,需要设置
showErrorImage为true,并设置errorImage为错误图片的地址
当传入的所有图片加载完成后,会触发
loadOverCallback回调函数
Image数组可以从最后面追加图片,追加图片后,会自动更新瀑布流,不需要手动调用
updateWaterfall方法
如果从数组头部或中间添加数据,或者是删除Image数组的的数据,需要手动调用updateWaterfall方法,更新瀑布流
调用updateWaterfall会使图片从头开始重新加载,会导致Waterfall组件高度重新计算,如果父组件有滚动条,滚动条会回到顶部
最后
如果在使用过程中有任何问题, 欢迎联系我!!!
邮箱:zwn_fobj@foxmail.com
相关文章:
一个基于vue3的图片瀑布流组件
演示 介绍 基于vue3的瀑布流组件 演示地址: https://wanning-zhou.github.io/vue3-waterfall/ 安装 npm npm install wq-waterfall-vue3yarn yarn add wq-waterfall-vue3pnpm pnpm add wq-waterfall-vue3使用 <template><Waterfall :images"imageList&qu…...
内存中的缓存区
在 Java 的 I/O 流设计中,BufferedInputStream 和 BufferedOutputStream 的“缓冲区”是 内存中的缓存区(具体是 JVM 堆内存的一部分),但它们的作用是优化数据的传输效率,并不是直接操作硬盘和内存之间的缓存。以下是详…...
【pytest框架源码分析一】pluggy源码分析之hook常用方法
简单看一下pytest的源码,其实很多地方是依赖pluggy来实现的。这里我们先看一下pluggy的源码。 pluggy的目录结构如下: 这里主要介绍下_callers.py, _hooks.py, _manager.py,其中_callers.py主要是提供具体调用的功能,_hooks.py提…...
《Kafka 理解: Broker、Topic 和 Partition》
Kafka 核心架构解析:从概念到实践 Kafka 是一个分布式流处理平台,广泛应用于日志收集、实时数据分析和事件驱动架构。本文将从 Kafka 的核心组件、工作原理、实际应用场景等方面进行详细解析,帮助读者深入理解 Kafka 的架构设计及其在大数据领域的重要性。 1. Kafka 的背…...
【AHK】资源管理器自动化办公实例/自动连点设置
此处为一个自动连续点击打开检查的自动化操作案例,没有quicker的鼠键录制,不常用了,做个备份 #MaxThreadsPerHotkey 2 ; 这个是核心!!!!确保可以同时运行多个热键或标签global isRunning : tru…...
在docker容器中运行vllm部署deepseek-r1大模型
# 在本地部署python环境 cd /app/ python -m venv myenv # 激活虚拟环境 source /app/myenv/activate # 要撤销激活一个虚拟环境,请输入: deactivate# 进入虚拟环境安装modelscope pip install modelscope# 下载大模型(7B为例) modelscope do…...
Django基础环境准备
Django基础环境准备 文章目录 Django基础环境准备1.准备的环境 win11系统(运用虚拟环境搭建)1.1详见我的资源win11环境搭建 2.准备python环境2.1 winr 打开命令提示符 输入cmd 进入控制台2.2 输入python --version 查看是否有python环境2.3在pyhton官网下…...
使用DeepSeek实现自动化编程:类的自动生成
目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节,让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中,自动化编程工具如…...
nio使用
NIO : new Input/Output,,在java1.4中引入的一套新的IO操作API,,,旨在替代传统的IO(即BIO:Blocking IO),,,nio提供了更高效的 文件和网络IO的 操作…...
【考试大纲】中级网络工程师考试大纲(最新版与旧版对比)
目录 引言考试科目1:网络工程师基础知识考试科目2:网络工程师应用技术引言 最新的网络工程师考试大纲出版于 2024 年 10 月,本考试大纲基于此版本整理。 考试科目1:网络工程师基础知识 计算机系统知识1.1 计算机硬件知识 1.2 操作系统知识 1.3 系统管理 系统开发和运行…...
Spring的下载与配置
1. 下载spring开发包 下载地址:https://repo.spring.io/webapp/#/artifacts/browse/simple/General/libs-release-local/org/springframework/spring 打开之后可以看到有很多版本供选择,因为视频教程用的是4.2.4版本,于是我也选择这个 右键…...
解决IDEA使用Ctrl + / 注释不规范问题
问题描述: ctrl/ 时,注释缩进和代码规范不一致问题 解决方式 设置->编辑器->代码样式->java->代码生成->注释代码...
学术小助手智能体
学术小助手:开学季的学术领航员 文心智能体平台AgentBuilder | 想象即现实 文心智能体平台AgentBuilder,是百度推出的基于文心大模型的智能体平台,支持广大开发者根据自身行业领域、应用场景,选取不同类型的开发方式,…...
kafka-leader -1问题解决
一. 问题: 在 Kafka 中,leader -1 通常表示分区的领导者副本尚未被选举出来,或者在获取领导者信息时出现了问题。以下是可能导致出现 kafka leader -1 的一些常见原因及相关分析: 1. 副本同步问题: 在 Kafka 集群中&…...
【开源-鸿蒙土拨鼠大理石系统】鸿蒙 HarmonyOS Next App+微信小程序+云平台
✨本人自己开发的开源项目:土拨鼠充电系统 ✨踩坑不易,还希望各位大佬支持一下,在GitHub给我点个 Start ⭐⭐👍👍 ✍GitHub开源项目地址👉:https://github.com/lusson-luo/HarmonyOS-groundhog-…...
HBuilder X中,uni-app、js的延时操作及定时器
完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中,uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如, 2秒后弹出一个提…...
下载pyenv
安装 1、git clone https://gitclone.com/github.com/pyenv/pyenv.git ~/.pyenv 备用:git clone https://hub.fgit.ml/pyenv/pyenv.git ~/.pyenv 配置环境变量 export PYENV_ROOT"$HOME/.pyenv" export PATH"$PYENV_ROOT/bin:$PATH"然后&…...
升级TTSDK抖音小游戏banner广告接入
升级TTSDK抖音小游戏banner广告接入 介绍修改总结 介绍 我们原来使用的是unity2021,这次为了抖音新出的TTSDK中的新的API升级我们将项目升级为了unity2022,这次抖音官方剔除了原来StartSDKUnityTools和Start Asset Analyser(startmini&#x…...
vue 项目部署到nginx 服务器
一 vue 项目打包 1 本地环境 npm run build 2 打包完成生成一个dist 文件夹,将其放到服务器指定的文件夹,此文件夹可以在nginx 配置文件中配置 二 nginx 1 根据对应的系统搜索安装命令 sudo yum install nginx 2 查看conf位置 如果不知道的话 ng…...
ubuntu终端指令集 shell编程基础(一)
磁盘指令 连接与查看:磁盘与 Ubuntu 有两种连接方式;使用ls /dev/sd*查看是否连接成功,通过df系列指令查看磁盘使用信息。若 U 盘已挂载,相关操作可能失败,需用umount取消挂载。磁盘操作:使用sudo fdisk 磁…...
win11编译pytorch cuda128版本流程
Geforce 50xx系显卡最低支持cuda128,torch cu128 release版本目前还没有释放,所以自己基于2.6.0源码自己编译wheel包。 1. 前置条件 1. 使用visual studio installer 安装visual studio 2022,工作负荷选择【使用c的桌面开发】,安装完成后将…...
STM32G431RBT6——(1)芯片命名规则
相信很多新手入门STM学的芯片,是STM32F103C8T6,假如刷到个项目换个芯片类型,就会感到好难啊,看不懂,就无从下手,不知所云。其实没什么难的,对于一个个不同的芯片的区别,就像是学习包…...
mac Homebrew安装、更新失败
我这边使用brew安装git-lfs 一直报这个错: curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL更新brew update也是报这个错误。最后使用使用大佬提供的脚本进行操作: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/mast…...
Ecode前后端传值
说明 在泛微 E9 系统开发过程中,使用 Ecode 调用后端接口并进行传值是极为常见且关键的操作。在上一篇文章中,我们探讨了 Ecode 调用后端代码的相关内容,本文将深入剖析在 Ecode 中如何向后端传值,以及后端又该如何处理接收这些值…...
Wireshark:自定义类型帧解析
文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧,仔细分析相关代码和数据帧后,…...
每日学习Java之一万个为什么?[MySQL面试篇]
分析SQL语句执行流程中遇到的问题 前言1 MySQL是怎么在一台服务器上启动的2 MySQL主库和从库是同时启动保持Alive的吗?3 如果不是主从怎么在启动的时候保证数据一致性4 ACID原则在MySQL上的体现5 数据在MySQL是通过什么DTO实现的6 客户端怎么与MySQL Server建立连接…...
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存
Spring 使用三级缓存来解决循环依赖问题,而不是仅使用二级缓存,主要是为了同时满足依赖注入和 AOP 代理的需求。以下是详细解释: ### Spring 三级缓存的作用 Spring 的三级缓存分别用于不同的场景: 1. **一级缓存(sin…...
2继续NTS库学习(读取shapefile)
引用库如下: 读取shapefile代码如下: namespace IfoxDemo {public class Class1{[CommandMethod("xx")]public static void nts二次学习(){Document doc Application.DocumentManager.MdiActiveDocument;var ed doc.Editor;string shpPath …...
避免 Git 文件名大小写出错
一、如何避免大小写出错? 配置 Git 全局忽略大小写 在 Windows 上,默认 Git 会忽略大小写。建议全局关闭此行为: git config --global core.ignorecase false统一团队命名规范 强制约定文件名全小写(如 config.json)或…...
JavaWeb后端基础(3)
原打算把Mysql操作数据库的一些知识写进去,但是感觉没必要,要是现在会的都是简单的增删改查,所以,这一篇,我直接从java操作数据库开始写,所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…...
