用Vue.js实现element-ui表格实现自动滚动

用Vue.js实现element-ui表格实现自动滚动

html这块重点是在表格定义ref,鼠标出入,还有表格固定高度height(很重要)

<template>
                <el-table
                        :data="tableData"
                        height="86%"
                        style="width: 100%"
                        highlight-current-row
                        ref="rolltable"
                        @mouseenter.native="stopScroll"
                        @mouseleave.native="startScroll"
                >
                    <el-table-column
                            prop="title"
                            label="标题"
                            width="520"
                    >
                        <template slot-scope="scope">
                            <div>
                                {{scope.row.title}}
                            </div>
                        </template>
                    </el-table-column>
                    <el-table-column
                            prop="releaseTime"
                            label="发布时间"
                            width="180">
                    </el-table-column>
                </el-table>
            </template>

在页面加载完后就启动滚动,所以在mounted里面调用滚动方法。

mounted(){
          this.tableScroll(false)
        },

这里是我的一些测试数据

        data() {
            return {
                tableData: [
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},  
                    {title:'111',releaseTime:'1'},
                ],
            };
        },

下面就是真正的方法了

        methods: {
            startScroll() {
                this.tableScroll(false);
            },

            stopScroll() {
                this.tableScroll(true);
            },

            //滚动方法
            tableScroll(stop) {
                if (stop) {
                    clearInterval(rolltimer)
                    return
                }
                const table = this.$refs.rolltable
                const divData = table.bodyWrapper
                rolltimer = setInterval(() => {
                    divData.scrollTop += 1
                    if (divData.clientHeight + divData.scrollTop + 1 > divData.scrollHeight) {
                        if (table.tableData.length > 5) {
                            divData.scrollTop = 0
                        }
                    }
                }, 35)

这篇文章主要借鉴了以下几个文章:
https://blog.csdn.net/YaRuu/article/details/124171779?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-124171779-blog-123521578.pc_relevant_aa_2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-124171779-blog-123521578.pc_relevant_aa_2&utm_relevant_index=18

https://blog.csdn.net/m0_49159526/article/details/115519424

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值