# vue3-seamless-scroll
`全新升级`无缝滚动组件,改为`虚拟列表`的方式渲染,支持`大数据滚动`,可以分页请求`无限数据滚动`,[更多使用方式看例子](https://github.com/xfy520/vue3-seamless-scroll/blob/v3.1/src/App.vue)
[老版本文档](https://github.com/xfy520/vue3-seamless-scroll/blob/v3/README.md)
> 目前组件支持上下左右无缝滚动,单步滚动,并且支持复杂图标的无缝滚动,目前组件支持平台与`Vue3.0`支持平台一致。
## 安装
- `npm`
```shell
npm install vue3-seamless-scroll --save
```
- `Yarn`
```shell
yarn add vue3-seamless-scroll
```
- `browser`
```html
```
## 组件配置
- `list`
> 无缝滚动列表数据。
```json
type: Array
required: true
```
- `visibleCount`
> 满足多少条数据时开启滚动,当每一条数据高度或者宽度一致时组件内会自动计算,否则最好手动指定
```json
type: Number
required: false
```
- `v-model`
> 通过v-model控制动画滚动与停止,默认开始滚动
```json
type: Boolean,
default: true,
required: false
```
- `direction`
> 控制滚动方向,可选值`up`,`down`,`left`,`right`
```json
type: String,
default: "up",
required: false
```
- `hover`
> 是否开启鼠标悬停
```json
type: Boolean,
default: false,
required: false
```
- `step`
> 步进速度
```json
type: Number,
default: 0.5,
required: false
```
- `singleWaitTime`
> 单步停止等待时间(默认值 1000ms)
```json
type: Number,
default: 1000,
required: false
```
- `delay`
> 动画延时时间
```json
type: Number,
default: 0,
required: false
```
- `ease`
> 动画效果,可以传入贝塞尔曲线数值
```json
type: String,
default: "cubic-bezier(0.03, 0.76, 1, 0.16)",
required: false
```
- `wheel`
> 在开启鼠标悬停的情况下是否开启滚轮滚动,默认不开启
```json
type: boolean,
default: false,
required: false
```
- `singleLine`
> 启用单行横向滚动
```json
type: boolean,
default: false,
required: false
```
## 组件方法
- `add(index, values, cb)`
> 添加数据、可以添加多个
```json
index: 在原数组什么位置开始添加数据,
values: 要添加的数据,为一个数组,
cb: 添加完后的回调,参数为添加后的完整数组
```
- `remove(index, num, cb)`
> 删除数据
```json
index: 从原数组什么位置开始移除数据,
num: 移除多少条数据,
cb: 移除完后的回调,参数为移除后的完整数组
```
- `update(index, value, cb)`
> 更新数据
```json
index: 更新原数组什么位置的元素,
value: 更新后的元素,
cb: 更新完后的回调,参数为更新后的完整数组
```
- `reset()`
> 重置组件状态,如外层盒子大小改变时需调用该方法重置
## 事件
- `offset(bufferSize, targetList)`
> 当缓存数据更新时触发该事件,可以用以做分页更新滚动数据,可以看`无限数据滚动例子`
```json
bufferSize: 显示缓存数量,
targetList: 原数组
```
- `count(count)`
> 当滚动完一个周期时触发该事件
```json
count: 滚动完一个周期的次数
```
## 注意项
> 需要滚动的列表所在容器必须设置样式 `overflow: hidden`;
## 使用
### 注册组件
- 全局组件注册 `install`
```JavaScript
// **main.js**
import { createApp } from 'vue';
import App from './App.vue';
import vue3SeamlessScroll from "vue3-seamless-scroll";
const app = createApp(App);
app.use(vue3SeamlessScroll);
app.mount('#app');
```
- 单个.vue文件局部注册
```html
```
### 使用组件
```html