一个基于Vue2.6+的虚拟列表组件,支持动态高度。 鼠标拖拽、方向键选择
通过 npm:
npm install @zjinh/vue-virtual-list --save
import virtualList from '@zjinh/vue-virtual-list';
Vue.use(virtualList);
export default {
components:{
virtualList
},
methods:{
scrollTo(index){
this.$virtualList.scrollTo(index)//滚动到指定下标的位置
$refs.virtualList.scrollTo(index)
//两种用法均可
}
}
}
<template>
<virtualList
:listData="dataList.list"
:item-height="50"
:item-width="200"
@scrollDown="loadMore"
>
<template v-slot="{ item, index, select }">
<span class="count">{{ index }}</span>
<img src="../assets/logo.png" :class="{ active: item.isSelected }" alt="" />
</template>
</virtualList>
</template>
参数 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
listData | Array | [] | ✓ | 列表数据 |
itemWidth | Number | 0 | 元素的宽度 | |
itemHeight | Number | 0 | ✓ | 元素的最小高度(支持动态高度) |
height | String | 100% | 列表的高度。 | |
absoluteHeight | Boolean | false | 绝对高度,启用后将不会出现滚动条 | |
bufferScale | Number | 1 | 可见区域外的上/下方预渲染比例,避免快速滑动时闪烁 | |
touchScale | Number | 2 | 手指移动与组件移动距离的比 | |
overFlow | String | auto | Y轴滚动条样式,默认auto | |
listenLazyLoad | Boolean | false | 监听懒加载,默认false |
|选中功能||||| |selectField|String|isSelected||选中所使用的字段| |mouseSelect|Boolean|false||鼠标拖拽选择| |mouseAreaClassName|String|default||鼠标拖拽选择区域class| |dragging|Boolean|false||是否正在拖拽,必须使用sync修饰符| |accuratePosition|Boolean|true||拖拽时是否精确元素位置| |calcGroupSelect|Boolean|false||计算相邻选中起始(仅在itemWidth为0的情况下有效)| |下拉刷新功能||||| |enablePullDown|Boolean|false||是否开启下拉功能| |pullDistance|Number|70||触发下拉回调阈值| |maxDistance|Number|70||最大下拉距离,若为 0 则不限制| |pullTextColor|String|#000||下拉文本颜色| |pullingText|String|下拉刷新||下拉状态为pull时提示区的文字| |pullDropText|String|松开刷新||下拉状态为drop时提示区的文字| |pullLoadingText|String|刷新中...||拉下状态为loading时提示区的文字| |底部加载更多||||| |scrollEndDistance|Number|10||距离底部多少px时触发加载|
事件名称 | 回调参数 | 说明 |
---|---|---|
scrollIng | event,data | 滚动中的回调 |
scrollEnd | event,data | 停止滚动的回调 |
scrollDown | 滚动到底部的回调 | |
onPull | state,distance | 下拉状态变更的回调 |
pullDown | 下拉刷新触发的回调 | |
callback | data | 渲染回调 |
状态 | 说明 |
---|---|
pull | 开始拖拽,距离未达到pullDistance |
drop | 距离达到 pullDistance 触发 pullDown |
loading | 已被释放,pullDown 已经执行 |
none | 刷新完成或未触发刷新动作 |
方法 | 说明 |
---|---|
this.$virtualList.scrollTo | 滚动到指定数据下标的位置 |
名称 | 说明 | 插槽Prop |
---|---|---|
default | 默认插槽 | item:列表项当前数据 index:数据索引 select:数据选中的起始 |
before | 顶部下拉插槽 | state:下拉状态 distance:下拉距离 |
after | 底部插槽 | 无 |