跑马灯插件 vue-seamless-scroll

本文介绍如何使用vue-seamless-scroll插件实现跑马灯效果,包括全局安装、引入配置及具体组件实例代码。通过调整参数可以改变滚动速度、方向等。

vue跑马灯插件 vue-seamless-scroll

全局安装:

npm  i  vue-seamless-scroll --save

引入main.js中:

import scroll from 'vue-seamless-scroll'
Vue.use(scroll)

跑马灯组件

<template>
  <div class="page-example3">
    <vue-seamless-scroll :data="listData" :class-option="defaultOption" >
      <ul class="ul-scoll">
          <li v-for="(n,index) in listData" :key="index" class="cycle">
              <div class="left" :class="index == n.type?'index'+ index:''">
                  {{n.name}}
              </div>
              <div class="right">
                  <p>{{n.title}}</p>
                  <p>{{n.content}}</p>
              </div>
          </li>
      </ul>
    </vue-seamless-scroll>
  </div>
</template>

<script>
export default {
  data(){
    return{
      listData:[{
        type:0,
        name:'视频设备离线预警',
        title:'门闸机离线',
        content: '【XXXXXX项目】在2021年6月6日12:12-20216月6日15:00已连续2个小时视频在线率低于50%,请进行处理',
      },
      {
        type:1,
        name:'扬尘超标预警',
        title:'扬尘设备离线',
        content: '【XXXXXX项目】在2021年6月6日12:12-20216月6日15:00已连续2个小时视频在线率低于50%,请进行处理',
      },{
        type:2,
        name:'塔吊长时间未运行',
        title:'安全帽公示',
        content: '【XXXXXX项目】在2021年6月6日12:12-20216月6日15:00已连续2个小时视频在线率低于50%,请进行处理',
      },{
        type:3,
        name:'安全帽公示',
        title:'扬尘超标',
        content: '【XXXXXX项目】在2021年6月6日12:12-20216月6日15:00已连续2个小时视频在线率低于50%,请进行处理',
      },{
        type:4,
        name:'扬尘超标预警',
        title:'视频在线率',
        content: '【XXXXXX项目】在2021年6月6日12:12-20216月6日15:00已连续2个小时视频在线率低于50%,请进行处理',
      }]
    }
  },
  computed: {
    defaultOption () {
      return {
        step: 0.2, // 数值越大速度滚动越快
        limitMoveNum: this.listData.length, // 开始无缝滚动的数据量 this.dataList.length
        hoverStop: true, // 是否开启鼠标悬停stop
        direction: 1, // 0向下 1向上 2向左 3向右
        openWatch: true, // 开启数据实时监控刷新dom
        singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
        singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
        waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
      }
    }
  },
  mounted() {
  }
}
</script>

<style lang="less" scoped>
.page-example3{
    width: 480px;
    height: 420px;
    overflow: hidden;
    margin: auto;
    margin-top: 40px;
    .ul-scoll{
        li{
            margin: 6px;
            padding: 5px;
            // background: rgba(198, 142, 226, 0.4);
            display: flex;
            width: 467px;
            height: 80px;
            background: rgba(32, 54, 85, 0.7);
            margin-bottom: 8px;
            align-items: center;
            justify-content: space-around;
            .left{
              width: 76px;
              height: 50px;
              background: linear-gradient(45deg, rgba(255, 107, 93, 0.96), rgba(255, 141, 87, 0.96));
              border-radius: 4px;
              text-align: center;
            }
            .index1{
              background: linear-gradient(45deg, rgba(107, 164, 246, 0.96), rgba(94, 252, 232, 0.96));
            }
            .index2{
              background: linear-gradient(45deg, rgba(93, 104, 255, 0.96), rgba(198, 87, 255, 0.96));
            }
            .index3{
              background: linear-gradient(195deg, rgba(254, 193, 99, 0.96), rgba(233, 87, 36, 0.96));
            }
            .index4{
              background: linear-gradient(45deg, rgba(107, 164, 246, 0.96), rgba(94, 252, 232, 0.96));
            }
            .right{
                p:nth-child(1){
                    font-size: 16px;
                    font-weight: 500;
                    color: #03A2FD;
                }
                p:nth-child(2){
                    width: 341px;
                    height: 36px;
                    font-size: 14px;
                    font-weight: 500;
                    color: #FFFFFF;
                    text-indent: 1em;
                    margin-bottom: 20px;
                }
            }
        }
    }
}
</style>
<think>首先,用户的问题是关于在Vue 3中使用vue3-seamless-scroll实现横向滚动功能。他们想知道具体的方法。 从系统指令中,我需要: - 使用中文回答。 - 结构清晰,逐步解决问题。 - 确保回答真实可靠。 - 在回答中引用的段落末尾自然地添加引用标识。 - 生成相关问题。 - 所有行内数学表达式使用$...$格式,但在这个上下文中,可能没有数学表达式,所以我可以忽略。 - 独立公式使用$$...$$格式,但同样,可能不需要。 用户提供的引用是关于vue3-seamless-scroll插件的: - 引用[1]:描述vue-seamless-scroll用于无缝滚动。 - 引用[2]:关于vue3-seamless-scroll的安装和配置。 - 引用[3]:参数如direction、step等。 - 引用[4]:提到自动横向滚动。 - 引用[5]:安装和注册方法。 用户的问题是:"我想在Vue 3中使用vue3-seamless-scroll实现横向滚动功能 请问vue3-seamless-scroll 实现横向滚动的方法" 所以,我需要基于这些引用,提供一个清晰的步骤指南。 关键点: - vue3-seamless-scroll支持横向滚动。 - 方向参数direction设置为"left"或"right"。 - 需要安装插件并配置组件。 步骤: 1. 安装vue3-seamless-scroll。 2. 注册组件(全局或局部)。 3. 在Vue组件中使用它,设置direction为"left"或"right"。 4. 配置其他参数如step(滚动速度)、hover(悬停停止)等。 从引用[3]:direction可以是"up", "down", "left", "right"。默认是"up"。 从引用[4]:提到自动横向滚动。 从引用[5]:安装和注册方法。 回答结构: - 先简要介绍插件- 然后分步说明如何实现横向滚动。 - 提供一个简单的代码示例。 - 最后生成相关问题。 在末尾添加引用标识:例如,在引用信息后添加[^1], [^2]等。 生成相关问题:基于主题,如优化、常见问题等。 确保回答真实可靠:基于提供的引用,不添加虚构信息。 最终回答结构: 1. 引言:解释vue3-seamless-scroll和横向滚动。 2. 步骤: a. 安装 b. 注册 c. 使用组件 3. 代码示例。 4. 相关问题。</think>### Vue 3 中使用 vue3-seamless-scroll 实现横向滚动的方法 在 Vue 3 项目中,`vue3-seamless-scroll` 是一个高效的无缝滚动插件,支持横向滚动(左或右方向),适用于新闻跑马灯、图片轮播等场景。以下基于官方文档和最佳实践,分步说明实现方法。整个过程确保真实可靠,参考了插件文档和社区经验[^2][^3][^5]。 #### 步骤 1: 安装插件 通过 npm 或 yarn 安装 `vue3-seamless-scroll`: ```bash npm install vue3-seamless-scroll --save # 或 yarn add vue3-seamless-scroll ``` 插件支持浏览器直接引入(如 CDN 方式),但推荐使用包管理器安装以确保版本兼容性[^2][^5]。 #### 步骤 2: 注册组件 在 Vue 3 项目中,可以选择全局注册或局部注册: - **全局注册**(推荐在入口文件如 `main.js` 中配置): ```javascript 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 setup> import { Vue3SeamlessScroll } from 'vue3-seamless-scroll'; </script> ``` 全局注册简化了多组件复用,而局部注册更灵活[^5]。 #### 步骤 3: 配置组件实现横向滚动 在 Vue 组件的模板中使用 `<vue3-seamless-scroll>`,并设置 `direction` 参数为 `"left"` 或 `"right"` 来启用横向滚动。关键参数说明: - `direction`: 设置为 `"left"`(向左滚动)或 `"right"`(向右滚动),默认为 `"up"`(向上滚动)。 - `step`: 控制滚动速度(数值越大越快),默认 `1`。 - `hover`: 是否开启鼠标悬停暂停滚动,默认 `true`。 - `list`: 绑定需要滚动的数据数组。 - `limitMoveNum`: 开始滚动的最小数据量(少于该值不滚动),默认 `5`。 - `copyNum`: 拷贝列表次数以优化无缝效果,默认 `1`[^3][^4]。 示例代码(实现向左横向滚动): ```vue <template> <div class="scroll-container"> <vue3-seamless-scroll :list="scrollData" direction="left" <!-- 关键:设置横向滚动方向 --> :step="2" <!-- 滚动速度 --> :hover="true" <!-- 悬停暂停 --> :limitMoveNum="3" <!-- 最小数据量 --> > <div v-for="(item, index) in scrollData" :key="index" class="scroll-item"> {{ item.text }} </div> </vue3-seamless-scroll> </div> </template> <script setup> import { ref } from 'vue'; // 示例数据:横向滚动的项目数组 const scrollData = ref([ { text: '新闻公告 1' }, { text: '图片轮播 2' }, { text: '广告内容 3' }, { text: '最新消息 4' }, { text: '促销信息 5' }, ]); </script> <style scoped> .scroll-container { width: 100%; overflow: hidden; white-space: nowrap; /* 确保内容横向排列 */ } .scroll-item { display: inline-block; padding: 10px 20px; background: #f0f0f0; margin-right: 10px; } </style> ``` #### 关键注意事项 - **数据量要求**:如果数据少于 `limitMoveNum`(默认 5),滚动不会启动。确保数据足够或调整该参数[^3]。 - **性能优化**:对于大数据集,使用 `copyNum` 增加列表拷贝次数可避免滚动断层。 - **浏览器兼容性**:测试主流浏览器,插件基于现代 CSS 和 JS,兼容性良好[^4]。 - **调试技巧**:如果滚动不生效,检查 CSS 是否限制容器宽度(如设置 `width: 100%`)或数据绑定是否正确。 通过以上步骤,您可以在 Vue 3 中轻松实现横向无缝滚动效果。如需更多自定义(如滚轮控制),可参考插件文档[^3][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值