首页 > 其他分享 >vue表格轮播插件

vue表格轮播插件

时间:2024-10-12 16:23:20浏览次数:11  
标签:box 插件 vue 滚动 轮播 表格 表头 timer scrollTop

1.前言

  • 需求:制作大屏看板时,经常要展示表格数据,通常一页时放不下的,表格需要自动滚动,并维持表头固定
  • 为何自己封装:网上的滚动组件由2类,一种传入json数据进行滚动,优点是可以做到表头固定,但是样式不方便自定义(DataV),一直是常规滚动插件,不支持表头固定

2.实现思路及说明

  • 使用插槽接收表格内容,便于用户自定义表格样式
  • 渲染完毕后计算可滚动距离,使用定时器进行滚动,滚动到底则抛出事件
  • 组件高度默认100%,需要自行给父容器设定高度
  • 表头固定使用position: sticky进行实现,其实就是一个吸顶效果,需要给表头一个背景色,防止滚动时表体内容内容透过来

3.使用方法

  • 引入该插件,将目标表格用此组件标签进行包裹
<zy-table-scroll @scrollToEnd="scrollToEnd" @noScroll="noScroll" :data="tableData">
    <table><table>
</zy-table-scroll>
  • 参数说明
参数 说明
data 表格数据,数组格式,用于监听数据变化,重置滚动
duration 每次滚动距离(px),默认10
step 滚动时间间隔(毫秒),默认0.2
@scrollToEnd 滚动到底事件
@noScroll 当数据不为空,但是没有产生滚动条时触发

4.代码

<template>
    <div class="table-scroll-wrap" ref="table-scroll-wrap">
        <slot></slot>
    </div>
</template>

<script>
export default{
    props: {
        data: {
            type:Array,
            default: function(){
                return []
            }
        },
        //滚动间隔(毫秒)
        duration: {
            type: Number,
            default: 10
        },
        //每次滚动距离(px)
        step: {
            type: Number,
            default: 0.2
        }
    },
    data(){
        return {
            timer: null,//定时器

        }
    },
    //这里不用update,而是用watch进行监听,是因为插槽的缘故,会导致update异常
    watch: {
        data(){
            //等待渲染完毕
            this.$nextTick(()=>{
                //初始化滚动
                this.initScroll()
            })
        }
    },
    mounted(){
        //初始化滚动
        this.initScroll()
    },
    beforeDestroy(){
        //清除定时器
        clearInterval(this.timer)
    },
    methods: {
        //初始化滚动
        initScroll(){
            var box = this.$refs['table-scroll-wrap']
            //计算滚动距离
            var scrollDistance = box.scrollHeight - box.clientHeight
            //没产生滚动,不做处理
            if(scrollDistance <= 0){
                //事件抛出(空列表不抛出,防止数据冲突)
                if(this.data.length > 0){
                    this.$emit('noScroll')
                }
                return
            }
            //回到顶部
            box.scrollTo({
                top: 0
            })
            //当前滚动距离
            var scrollTop = box.scrollTop
            //开启定时器执行滚动scrollTo
            clearInterval(this.timer)
            this.timer = setInterval(()=>{
                //进行滚动
                if(scrollTop >= scrollDistance){
                    //清除定时器
                    clearInterval(this.timer)
                    //事件抛出
                    this.$emit('scrollToEnd')
                }else{
                    //执行滚动
                    scrollTop += this.step
                    box.scrollTo({
                        top: scrollTop
                    })
                }
            },this.duration)
        }
    }
}
</script>


<style scoped lang="scss">
.table-scroll-wrap{
    height: 100%;
    overflow: auto;
    &::-webkit-scrollbar {
        width: 0;
    }
    table{
        tr{
            &:first-child{
                position: sticky;
                top:0;
            }
        }
    }
}
</style>

标签:box,插件,vue,滚动,轮播,表格,表头,timer,scrollTop
From: https://www.cnblogs.com/OrochiZ-/p/18460774

相关文章

  • 【开题报告】基于Springboot+vue同学录网站系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今信息化高速发展的时代,互联网已成为人们日常生活中不可或缺的一部分。随着教育信息化的推进,学生之间的交流与联系逐渐从线下转移到线上。同学录......
  • 前后端分离nodejs_vue+javascript个人身体健康档案管理系统
    目录技术栈具体实现截图开发工具和技术简介错误处理和异常处理nodejs类核心代码部分展示解决的思路其他题目推荐源码获取/联系我技术栈该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是MySQL,为了更加便捷地使用数据库,用到了......
  • 抖音直播间自动发送评论-唯一客服浏览器插件
    应用场景主流直播平台后台评论自动回复与循环发送话术某些客服平台网页端咨询消息自动回复功能介绍这是一个电脑端浏览器插件扩展,实现模拟人工收发消息,解放双手,摆脱重复工作利用浏览器多开,可以在一台电脑上运行多个浏览器,每个浏览器登录不同账号,同时运行插件。插件不限制直播或......
  • 基于SpringBoot+Vue的中山社区医疗综合服务平台系统+万字论文+Mp4演示
    系统简介:基于SpringBoot+Vue的中山社区医疗综合服务平台系统+万字论文+Mp4演示资源描述:是否有万字论文:有是否有论文视频:有是否有PPT:没有是否有Mp4演示:有是否有演示站:有是否前后端分离:是技术栈:Java:JDK8主要编程语言,用于后端开发MySQL:数据库管......
  • 【开题报告+论文+源码】基于SpringBoot+Vue的个性化推荐系统的学生就业互助系统的设计
    项目背景与意义随着社会的发展,大学毕业生就业形势严峻,就业难成为社会关注的热点问题。校园就业服务平台作为大学生就业的重要渠道和桥梁,起到了连接学生和用人单位的重要作用。然而,目前存在的一些问题限制了校园就业服务平台的发展和应用。首先,传统的校园就业服务平台功能单一......
  • springboot+vue基于Web的校园羽毛球馆管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在当今信息化快速发展的时代,高校作为知识传播与创新的重要场所,其基础设施的管理与服务水平直接影响到师生的学习与生活体验。羽毛球作为一项广受欢迎的体育运动,不仅能够锻炼身体,还能促进社交互动。然而,传统的高校羽毛球馆管理方式存在......
  • springboot+vue火车订票模拟系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,传统火车订票方式已难以满足现代社会的需求。传统的订票方式往往需要用户亲自前往售票点或通过电话进行预订,这种方式不仅效率低下,还容易出现信息滞后、排队等候等问题。为了解决这些问题,火车订票模拟系统的开发......
  • springboot+vue基于springboot高校毕业生信息管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着高等教育的普及和毕业生就业市场的竞争加剧,高校毕业生信息管理系统成为了各大高校不可或缺的一部分。传统的人工管理方式不仅效率低下,还容易出现信息错漏和更新不及时的问题。近年来,随着信息技术的飞速发展,尤其是SpringBoot等轻......
  • 基于SpringBoot+Vue的体育馆场地预约系统
    作者:计算机学姐开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选......
  • 推荐一款支持Vue3的管理系统模版:Vue-Vben-Admin
    近年来,随着前端技术的飞速发展,各类后台管理系统框架层出不穷。Vue作为热门的前端框架,也有许多优秀的后台模板涌现。而Vue-Vben-Admin,凭借其高效、灵活的架构设计和完善的功能体系,成为了许多前端开发者的不二选择。其GithubStar达到了24K之多,可见其受欢迎程度。本文将详细介绍V......