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列表无缝动态滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vuex的安装、搭建及案例详解

    Vuex的安装、搭建及案例详解

    vuex是一个专门为vue开发的状态管理工具,它采用集中式存储管理应用的所有组件的状态,其核心是state,下面这篇文章主要给大家介绍了关于Vuex的安装、搭建及案例的相关资料,需要的朋友可以参考下
    2022-05-05
  • vue如何通过事件的形式调用全局组件

    vue如何通过事件的形式调用全局组件

    这篇文章主要介绍了vue如何通过事件的形式调用全局组件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • 在vue中使用eslint,配合vscode的操作

    在vue中使用eslint,配合vscode的操作

    这篇文章主要介绍了在vue中使用eslint,配合vscode的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue页面加载闪烁问题的解决方法

    vue页面加载闪烁问题的解决方法

    这篇文章主要介绍了vue页面加载闪烁问题的解决方法,文中给大家提到了v-if 和 v-show 的区别,解决vue页面加载时出现{{message}}闪退的两种方法,感兴趣的朋友一起看看吧
    2018-03-03
  • Vue+LogicFlow+Flowable实现工作流

    Vue+LogicFlow+Flowable实现工作流

    本文主要介绍了Vue+LogicFlow+Flowable实现工作流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • vue 长列表数据刷新的实现及思考

    vue 长列表数据刷新的实现及思考

    这篇文章主要为大家介绍了vue 长列表数据刷新的实现及思考,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • vue3如何使用VueQuill插入自定义按钮

    vue3如何使用VueQuill插入自定义按钮

    在Vue3项目中使用VueQuill编辑器,通过自定义Blot元素,可以插入特定的标签或样式元素,满足项目需求
    2024-11-11
  • vue(2.x,3.0)配置跨域代理

    vue(2.x,3.0)配置跨域代理

    这篇文章主要介绍了vue(2.x,3.0)配置跨域代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • vue+element-ui实现头部导航栏组件

    vue+element-ui实现头部导航栏组件

    这篇文章主要为大家详细介绍了vue+element-ui实现头部导航栏组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue如何使用vue slot封装公共组件

    vue如何使用vue slot封装公共组件

    这篇文章主要介绍了vue如何使用vue slot封装公共组件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论