1.vue3-seamless-scroll 
安装 
bash
  yarn add vue3-seamless-scroll组件配置 
- list无缝滚动列表数据,组件内部使用列表长度。 
ts
type: Array
required: true- v-model通过 v-model 控制动画滚动与停止,默认开始滚动 
ts
    type: Boolean,
    default: true,
    required: false- direction控制滚动方向,可选值 up,down,left,right
ts
    type: String,
    default: "up",
    required: false- isWatch开启数据更新监听 
ts
    type: Boolean,
    default: true,
    required: false- hover是否开启鼠标悬停 
ts
  type: Boolean,
  default: false,
  required: false- count动画循环次数,默认无限循环 
ts
    type: Number,
    default: "infinite",
    required: false- limitScrollNum开启滚动的数据量,只有列表长度大于等于该值才会滚动 
ts
    type: Number,
    default: 5,
    required: false- step步进速度 
ts
    type: Number,
    required: false- singleHeight单步运动停止的高度 
ts
  type: Number,
  default: 0,
  required: false- singleWidth单步运动停止的宽度 
ts
    type: Number,
    default: 0,
    required: false- singleWaitTime单步停止等待时间(默认值 1000ms) 
ts
  type: Number,
  default: 1000,
  required: false- isRemUnitsingleHeight and singleWidth 是否开启 rem 度量 
ts
  type: Boolean,
  default: true,
  required: false- delay动画延时时间 
shell
  type: Number,
  default: 0,
  required: false- ease动画效果,可以传入贝塞尔曲线数值 
ts
  type: String | cubic-bezier,
  default: "ease-in",
  required: false- copyNum拷贝列表次数,默认拷贝一次,当父级高度大于列表渲染高度的两倍时可以通过该参数控制拷贝列表次数达到无缝滚动效果 
ts
    type: Number,
    default: 1,
    required: false- wheel在开启鼠标悬停的情况下是否开启滚轮滚动,默认不开启 
ts
  type: boolean,
  default: false,
  required: false- singleLine启用单行横向滚动 
ts
    type: boolean,
    default: false,
    required: false注意事项 
需要滚动的列表所在容器必须设置样式 overflow: hidden;
2.使用 
- 全局注册
typescript
/**
 * main.ts 全局注册
 */
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
<script>
import { defineComponent } from 'vue'
import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
export default defineComponent({
  components: {
    Vue3SeamlessScroll
  }
})
</script>点击查看
vue
<script setup lang="ts">
import { ref } from 'vue'
// import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'
const value = ref(true)
const list = ref([
  {
    title: 'Vue3.0 无缝滚动组件展示数据第1条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第2条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第3条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第4条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第5条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第6条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第7条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第8条',
    date: Date.now()
  },
  {
    title: 'Vue3.0 无缝滚动组件展示数据第9条',
    date: Date.now()
  }
])
</script>
<template>
  <a-button type="primary" @click="value = !value">
    {{ value ? 'STOP' : 'START' }}
  </a-button>
  <vue3-seamless-scroll v-model="value" class="scroll" :list="list" hover>
    <div v-for="(item, index) in list" :key="index" class="item">
      <span>{{ item.title }}</span>
      <span>{{ item.date }}</span>
    </div>
  </vue3-seamless-scroll>
</template>
<style scoped>
.scroll {
  height: 270px;
  width: 500px;
  margin: 0 auto;
  overflow: hidden;
}
.scroll .item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 3px 0;
}
</style>