原生实现的虚拟滚动容器组件,支持横向和纵向虚拟滚动,适用于大数据量列表的高性能渲染。不依赖 el-scrollbar,采用原生 CSS 滚动容器,更轻量灵活。
# 基本用法
复制代码
# 纵向虚拟滚动
复制代码
# 横向虚拟滚动
复制代码
# 非虚拟滚动模式
内容行 1 - 原生滚动条
内容行 2 - 原生滚动条
内容行 3 - 原生滚动条
内容行 4 - 原生滚动条
内容行 5 - 原生滚动条
内容行 6 - 原生滚动条
内容行 7 - 原生滚动条
内容行 8 - 原生滚动条
内容行 9 - 原生滚动条
内容行 10 - 原生滚动条
内容行 11 - 原生滚动条
内容行 12 - 原生滚动条
内容行 13 - 原生滚动条
内容行 14 - 原生滚动条
内容行 15 - 原生滚动条
内容行 16 - 原生滚动条
内容行 17 - 原生滚动条
内容行 18 - 原生滚动条
内容行 19 - 原生滚动条
内容行 20 - 原生滚动条
复制代码
# 配合 XtList 使用
复制代码
# 配合 XtScrollArrow 使用
复制代码
# Attributes
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| v-scroll | 是否启用虚拟滚动 | boolean | false |
| data | 虚拟滚动数据源 | array | [] |
| item-size | 每个 item 的固定尺寸(px),纵向为高度,横向为宽度 | number | 50 |
| key-field | item 的唯一键字段名 | string | 'id' |
| buffer-size | 预渲染缓冲区大小(item 数量) | number | 5 |
| scroll-direction | 虚拟滚动方向 | 'vertical' | 'horizontal' | 'vertical' |
| item-class-name | item 的自定义 CSS 类名 | string | '' |
| height | 容器高度 | number | string | '' |
| max-height | 容器最大高度 | number | string | '' |
| width | 容器宽度 | number | string | '' |
| max-width | 容器最大宽度 | number | string | '' |
| loading | 加载状态 | boolean | false |
| empty-text | 空数据提示文字 | string | '暂无数据' |
| load-more | 是否启用加载更多 | boolean | false |
| load-more-text | 加载更多按钮文字 | string | '加载更多' |
| load-more-loading | 加载更多按钮加载状态 | boolean | false |
# Slots
| 名称 | 说明 | 作用域 |
|---|---|---|
| default | 非虚拟滚动模式下的默认内容 | — |
| item | 虚拟滚动模式下每个 item 的渲染内容 | { item, index } |
| empty | 空数据时的自定义内容 | — |
| loading | 加载中的自定义内容 | — |
# Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| scroll | 滚动事件 | { scrollTop, scrollLeft } |
| load-more | 触发加载更多 | — |
# Methods
| 方法名 | 说明 | 参数 |
|---|---|---|
| scrollTo(pos) | 滚动到指定位置 | pos: number |
| scrollToItem(index) | 滚动到指定索引的 item | index: number |
| scrollToStart() | 滚动到顶部/左侧 | — |
| scrollToEnd() | 滚动到底部/右侧 | — |
| getScrollPos() | 获取当前滚动位置 | — |
| getScrollContainer() | 获取原生滚动容器 DOM 元素 | — |
# XtScrollArrow 新增属性
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| v-scroll | 是否启用虚拟滚动 | boolean | false |
| v-scroll-data | 虚拟滚动数据源 | array | [] |
| item-size | 每个 item 的固定尺寸(px) | number | 50 |
| key-field | item 的唯一键字段名 | string | 'id' |
| buffer-size | 预渲染缓冲区大小 | number | 5 |
| v-scroll-loading | 虚拟滚动加载状态 | boolean | false |
| load-more | 是否启用加载更多 | boolean | false |
| load-more-text | 加载更多按钮文字 | string | '加载更多' |
| load-more-loading | 加载更多按钮加载状态 | boolean | false |
# XtScrollArrow 新增 Slot
| 名称 | 说明 | 作用域 |
|---|---|---|
| vitem | 虚拟滚动模式下每个 item 的渲染内容 | { item, index } |