elementUi+table实现表格数据滚动

Posted zbfoot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elementUi+table实现表格数据滚动相关的知识,希望对你有一定的参考价值。

elementUi+table实现表格数据滚动

引用vue和elementUI CDN

// 引用elementUI CDN
<script src="https://unpkg.com/vue@2/dist/vue.js"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

// 引用VUE CDN
<script src="https://unpkg.com/vue@2/dist/vue.js"></script>

1.页面代码

<div id="app">
    <el-table ref="table" class="table2"  :data="tableData">
        <el-table-column prop="data1" label="序号" align="center">
        </el-table-column>
        <el-table-column prop="data2" label="科室" align="center">
        </el-table-column>
    </el-table>
</div>

2.数据

new Vue(
    el: \'#app\',
    data: function () 
      return 
        tableData: [
                
                    data1: "1",
                    data2: "外科手术室"
                ,
                
                    data1: "2",
                    data2: "内科手术室"
                ,
                
                    data1: "3",
                    data2: "骨关节科"
                ,
                
                    data1: "4",
                    data2: "麻醉一科"
                ,
                
                    data1: "5",
                    data2: "心内"
                ,
                
                    data1: "6",
                    data2: "运动医学科"
                ,
                
                    data1: "7",
                    data2: "骨关节科"
                ,
                
                    data1: "8",
                    data2: "运动医学科"
                ,
                
                    data1: "7",
                    data2: "脊柱外科"
                ,
                
                    data1: "9",
                    data2: "心血管内科一病区"
                ,
                
                    data1: "10",
                    data2: "心血管内科二病区"
                ,
                
                    data1: "11",
                    data2: "心血管外科"
                ,
            ],
        
    
)

3.滚动逻辑

mounted() 
    // 拿到表格挂载后的真实DOM
    const table = this.$refs.table
    // 拿到表格中承载数据的div元素
    const divData = table.bodyWrapper
    // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
    setInterval(() => 
        // 元素自增距离顶部1像素
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) 
            // 重置table距离顶部距离
            divData.scrollTop = 0
        
    , 100)

完整代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- import CSS -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>

<body>
    <div id="app">
        <el-table ref="table" class="table2"  :data="tableData">
            <el-table-column prop="data1" label="序号" align="center">
            </el-table-column>
            <el-table-column prop="data2" label="科室" align="center">
            </el-table-column>
        </el-table>
    </div>
</body>
<!-- import Vue before Element -->
<script src="https://unpkg.com/vue@2/dist/vue.js"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    new Vue(
        el: \'#app\',
        data: function () 
            return 
                tableData: [
                    
                        data1: "1",
                        data2: "外科手术室"
                    ,
                    
                        data1: "2",
                        data2: "内科手术室"
                    ,
                    
                        data1: "3",
                        data2: "骨关节科"
                    ,
                    
                        data1: "4",
                        data2: "麻醉一科"
                    ,
                    
                        data1: "5",
                        data2: "心内"
                    ,
                    
                        data1: "6",
                        data2: "运动医学科"
                    ,
                    
                        data1: "7",
                        data2: "骨关节科"
                    ,
                    
                        data1: "8",
                        data2: "运动医学科"
                    ,
                    
                        data1: "7",
                        data2: "脊柱外科"
                    ,
                    
                        data1: "9",
                        data2: "心血管内科一病区"
                    ,
                    
                        data1: "10",
                        data2: "心血管内科二病区"
                    ,
                    
                        data1: "11",
                        data2: "心血管外科"
                    ,
                ],
            
        ,
        mounted() 
            // 拿到表格挂载后的真实DOM
            const table = this.$refs.table
            // 拿到表格中承载数据的div元素
            const divData = table.bodyWrapper
            // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
            setInterval(() => 
                // 元素自增距离顶部1像素
                divData.scrollTop += 1
                // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
                if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) 
                    // 重置table距离顶部距离
                    divData.scrollTop = 0
                
            , 100)
        
    )
</script>

</html>

elementUI 表格翻页后 滚动条回到顶部/第一行

情况1:组件中直接使用的是el-table

<el-table ref="table"></el-table>

那么需要在用到的地方直接使用

this.$nextTick(() =>
     this.$refs.table.bodyWrapper.scrollTop = 0
)

参考:https://www.dianjilingqu.com/341176.html

以上是关于elementUi+table实现表格数据滚动的主要内容,如果未能解决你的问题,请参考以下文章

element-ui table下方出现滚动条的情况

ElementUI Table横向滚动条遇到的问题汇总

ElementUI表格合计项固定列 滚动条不可滑动

ElementUI表格合计项固定列 滚动条不可滑动

elementUI 表格翻页后 滚动条回到顶部/第一行

elementui表格div变化,内容没有响应