vue实现列表无缝动态滚动

 更新时间:2024年11月07日 09:15:29   作者:阿琰a_  
要想实现列表的动态无缝滚动,本文为大家推荐两款组件,vue-seamless-scroll和vue3-seamless-scroll,组件的用法也非常简单,下面就跟随小编一起来学习一下吧

要想实现列表的动态无缝滚动,这里推荐两款组件,vue-seamless-scroll和vue3-seamless-scroll,组件的用法也非常简单,以下是使用方式。

vue2

vue2版本使用vue-seamless-scroll

vue-seamless-scroll文档https://chenxuan0000.github.io/vue-seamless-scroll/zh/guide/

一、安装组件

npm install vue-seamless-scroll --save

二、引入组件

import VueSeamlessScroll from 'vue-seamless-scroll'

三、使用组件

<template>
   <div class="box-content">
                    <div class="box-table-title">
                        <div style="width: 40%">所属公司</div>
                        <div style="width: 20%">检查结果</div>
                        <div style="width: 30%">检查时间</div>
                        <div style="width: 10%">操作</div>
                    </div>
                    <div class="box-table">
                        <div class="box-table-body" style="width: 100%;height: 140px;overflow: hidden" @click="clickup($event)">
                            <vue-seamless-scroll :data="checkList" :classOption="classOption">
                                <div class="box-table-row" v-for="item in checkList" :key="item.id">
                                    <div class="ellipsis" style="width: 40%">{{ item.enterpriseName }}</div>
                                    <div :class="['ellipsis',item.inspectionResult==='1'?'':'isRed']" style="width: 20%">{{item.inspectionResult==='1'?'合格':'不合格'}}</div>
                                    <div class="ellipsis" style="width: 30%">{{ item.inspectionTime }}</div>
                                    <div class="ellipsis facility-button" style="width: 10%"  :data-item="JSON.stringify(item)">详情</div>
                                </div>
                            </vue-seamless-scroll>
                        </div>
                    </div>
                </div>          
</template>

组件使用方法很简单,引入组件后,直接给组件传入列表数组和组件配置项即可,外层容器需要设置width、height、overflow:hidden,组件的配置项可以写在computed里缓存起来。

 computed: {
        classOption () {//大屏滚动配置参数
            return {
                step: 1, // 数值越大速度滚动越快
                limitMoveNum: 6, // 开始无缝滚动的数据量
                hoverStop: true, // 是否开启鼠标悬停stop
                direction: 1, // 0向下 1向上 2向左 3向右
                waitTime: 3000, // 单步运动停止的时间(默认值1000ms)
                singleHeight:30
            }
        },
    },

实现效果如下

四、注意

在滚动列表中添加点击事件,出现点击事件失效的问题,可以看到在最后一项添加了详情按钮,点击按钮有一部分无法跳出弹窗。

原因是在于滚动组件为了实现无缝滚动,内部复制了一份dom,复制的那份dom无法触发点击事件。

解决方案:

利用事件委托,在详情按钮那里绑定自定义属性,然后给父级元素绑定点击事件,通过e.target.dataset获取自定义属性,拿到对应的数据。

//利用事件委托,解决滚动导致的点击事件失效问题
        clickup(e){
            if(e.target.dataset.item){
                let row = JSON.parse(e.target.dataset.item)
                console.log(row)
            }
        },

vue3里实现列表滚动可以使用vue3-seamless-scroll,用法与vue2版本有一点不同,将配置项拆开传入组件了

vue3

vue3版本使用vue3-seamless-scroll

vue3-seamless-scroll文档:https://doc.wssio.com/opensource/vue3-seamless-scroll/

一、组件安装

npm install vue3-seamless-scroll

二、引入组件

import {Vue3SeamlessScroll} from 'vue3-seamless-scroll'

三、使用组件

<div class="table">
      <div class="table-header">
        <div>时间</div>
        <div>姓名</div>
        <div>地址</div>
      </div>
 
      <div class="table-body">
        <Vue3SeamlessScroll  v-model="isScroll" :list="tableData" :step="0.5" :hover="true"
                             :limitScrollNum="3" :wheel="true">
          <div v-for="(item, index) in tableData" :key="index" class="table-row">
            <div>{{ item.date }}</div>
            <div>{{ item.name }}</div>
            <div>{{ item.address }}</div>
          </div>
        </Vue3SeamlessScroll>
      </div>
 
    </div>

四、demo实现效果

到此这篇关于vue实现列表无缝动态滚动的文章就介绍到这了,更多相关vue列表无缝动态滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 老生常谈vue的生命周期

    老生常谈vue的生命周期

    这篇文章主要为大家详细介绍了vue的生命周期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Vue中watchEffect的追踪逻辑介绍

    Vue中watchEffect的追踪逻辑介绍

    这篇文章主要介绍了Vue中watchEffect的追踪逻辑,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 安装多版本Vue-CLI的实现方法

    安装多版本Vue-CLI的实现方法

    这篇文章主要介绍了安装多版本Vue-CLI的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vue 实现在同一界面实现组件的动态添加和删除功能

    vue 实现在同一界面实现组件的动态添加和删除功能

    这篇文章主要介绍了vue 实现在同一界面实现组件的动态添加和删除,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • vue3中封装axios请求最新实现步骤

    vue3中封装axios请求最新实现步骤

    这篇文章主要给大家介绍了关于vue3中封装axios请求的最新实现步骤,在Vue 3中可以通过封装axios来实现接口的统一管理和调用,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Vue中使用elementui与Sortable.js实现列表拖动排序

    Vue中使用elementui与Sortable.js实现列表拖动排序

    这篇文章主要为大家详细介绍了Vue中使用elementui与Sortable.js实现列表拖动排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue2自定义组件通过rollup配置发布到npm的详细步骤

    vue2自定义组件通过rollup配置发布到npm的详细步骤

    这篇文章主要介绍了vue2自定义组件通过rollup配置发布到npm,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • vue2和vue3实现图片懒加载方式

    vue2和vue3实现图片懒加载方式

    这篇文章主要介绍了vue2和vue3实现图片懒加载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 使用Elemen加上lang=“ts“后编译报错

    使用Elemen加上lang=“ts“后编译报错

    本文主要介绍了使用Elemen加上lang=“ts“后编译报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • vue3.0父传给子的值不随父组件改变而改变问题及解决

    vue3.0父传给子的值不随父组件改变而改变问题及解决

    这篇文章主要介绍了vue3.0父传给子的值不随父组件改变而改变问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论