-
支持固定高度
-
支持可变高度
-
支持两栏瀑布流布局
-
支持DOM多屏配置
-
支持状态选择
-
支持数据动态追加
-
支持动态删除数据
npm install lite-virtual-list
import liteVirtualList from "lite-virtual-list"
Vue.use(liteVirtualList)
<template>
<lite-virtual-list type="fixed" :size="80" :remain="8" :data="items">
<div slot-scope="{ item }" style="height: 80px">{{ item.value }}</div>
</lite-virtual-list>
</template>
<script>
let items = []
let count = 1000
for (let i = 0; i < count; i++) {
items.push({ id: i, value: i })
}
export default {
data() {
return { items }
}
}
</script>
Props | Type | Default | Required | Description |
---|---|---|---|---|
data | Array | [ ] | ✓ | 数据源,数据源中的每个item必须是一个对象, 每个item必须传入一个唯一id值 { id : Number | String } ,当type为waterfall 时,每个item传入height字段 { height : Number | String } ,即每一项item的高度 |
type | String | ✓ | type可指定三种类型 fixed variable waterfall fixed : item的高度为固定值 variable : item的高度根据内容撑起 waterfall : 瀑布流布局 |
|
remain | Number | String | ✓ | 每屏可见的数据条数 | |
size | Number | String | size是每一项item的高度。 当type为 fixed 或 variable 时size为必传项。 type为variable 时 size会被当做每一项的默认高度,当DOM渲染完成后会用真实高度替换此默认高度 |
||
screen | Array | [ 1 , 1 ] | 可视区前后渲染的屏数。 默认值为[1,1] ,可视区前后各渲染一屏。 例::screen="[2,3]" 表示可视区前面渲染两屏,可视区后面渲染三屏。 |
|
distance | Number | String | 50 | 页面滚动时触发loadMore 回调的距离,默认为50 |
|
interval | Number | String | 0 | scroll 事件触发间隔,默认为0 |
|
virtualHieght | String | 100% | 虚拟列表的高度,默认为100% 。当type为fixed 时,高度会根据size 和remain 属性动态计算出来,不用传入此值。当type为variable 或 waterfall 时,若不传入此属性,外部容器必须声明一个高度值。 |
|
unit | String | px | 单位,默认为px |
|
deleteId | Number | String | 动态删除某一项时需要传入当前项目的id值,当type为fixed 时,不传deleteId,直接this.data.splice(index,1) 删除也行,此时内部会动态计算高度 |
||
marginBottom | Number | String | 0 | 每项item的间隔距离。 此属性专门为type='waterfall' 时提供,type为fixed 或variable 时此属性无效 |
<lite-virtual-list >
<!-- 默认slot,可拿到每个item数据 -->
<template slot="default" slot-scope="{ item }" >
<div>{{item.id}}</div>
</template>
<!-- 底部 -->
<template slot="bottom">
<div>加载中...</div>
</template>
</lite-virtual-list>
页面滚动时触发
该回调会返回一个对象
当type为fixed
或variable
时,该对象包含以下 property :
-
scrollTop
: 页面滚动的距离 -
renderScrollTop
: 渲染区域距离页面滚动的距离 -
renderData
: 滚动时渲染的数据
当type为waterfall
时,该对象包含以下 property :
-
scrollTop
: 页面滚动的距离 -
renderLeftScrollTop
: 左列数据渲染区域距离页面滚动的距离 -
renderRightScrollTop
: 右列数据渲染区域距离页面滚动的距离 -
renderLeftData
: 左列滚动被渲染的数据 -
renderLeftData
: 右列滚动时渲染的数据
DOM渲染到页面之后触发
当type为fixed
或variable
时,该回调会返回
renderData
: 渲染到页面上的数据
当type为variable
时,该回调会返回一个对象,该对象包含以下 property :
renderLeftData
: 左列滚动被渲染的数据renderLeftData
: 右列滚动时渲染的数据
页面滚动到底部时触发 ,可结合distance
属性配置距离底部多远时触发此回调,默认为50
动态删除某一项item成功后会触发,该回调会返回当前被删除项数据