vue-virtual-waterfall

January 28, 2026 · View on GitHub

一款vue3虚拟瀑布流组件

npm Last Commit

English Doc

示例

使用

pnpm add @lhlyu/vue-virtual-waterfall

  • 局部引用
import { VirtualWaterfall } from '@lhlyu/vue-virtual-waterfall'
  • 全局引用
import VueVirtualWaterfall from '@lhlyu/vue-virtual-waterfall'

app.use(VueVirtualWaterfall)
  • 使用
<template>
    <VirtualWaterfall
        :items="items"
        :calcItemHeight="calcItemHeight"
    >
        <template #default="{ item }: { item: ItemOption }">
            <div class="card">
                <img :src="item.img" />
            </div>
        </template>
    </VirtualWaterfall>
</template>
  • Nuxt3中使用

例子

注意!!!

VirtualWaterfall 组件想要实现虚拟列表,包裹它的容器必须指明固定的高度,滚动事件可以绑定在这个容器上,如果这个组件挂在到body下,同样需要指明body的高度,滚动事件可以绑定在 window

文档

  • 属性
字段类型默认值说明
virtualbooleantrue是否启用虚拟列表
rowKeystring'id'v-for需要用到key
enableCachebooleantrue是否启用缓存
gapnumber15每个item之间的间隔
paddingnumber or string15 or '15px 15px'容器内边距
preloadScreenCount[number, number][0:0]预加载屏数量[上面预加载屏数,下面预加载屏数]
itemMinWidthnumber220每个item最小宽度
maxColumnCountnumber10允许的最大列数
minColumnCountnumber2允许的最小列数
itemsany[][]数据
calcItemHeight(item: any, itemWidth: number) => number(item: any, itemWidth: number) => 250计算item高度的方法
  • 插槽
事件类型说明
default{ item: any, index: number }自定义默认内容
  • 方法
EventTypeDescription
withItemSpaces(cb: (spaces: readonly SpaceOption[]) => Promise<void> | void)读取元素空间信息