首页 > 其他分享 >elementUi+table实现表格数据滚动

elementUi+table实现表格数据滚动

时间:2023-05-05 18:01:09浏览次数:38  
标签:表格 elementUi 距离 divData scrollTop table data1 data2

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" height="350" :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" height="350" :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,距离,divData,scrollTop,table,data1,data2
From: https://www.cnblogs.com/zbfoot/p/17374984.html

相关文章

  • DataTable添加数据
       在ASP.NET中添加数据到DataTable可以使用以下步骤: 1.创建DataTable对象: DataTabledt=newDataTable(); 2.添加列名: dt.Columns.Add("列名1");dt.Columns.Add("列名2");dt.Columns.Add("列名3"); 3.添加行数据: DataRowrow1=dt.NewRow();ro......
  • 【Java】对pdf表格中的字符串进行换行处理
    需求:将数据库查出来的字符串数组放入pdf的表格中,并且每个字符串单独占一行解决:1、尝试在字符串后面加上/r或/n无效:只会在两个字符串之间加上一个空格 2、尝试在字符串后面加上/br无效,无法识别/br,只会识别成/b与字符串r 3、尝试使用第三方库的方法(成功)三方库为:com.i......
  • wps新建无边框表格
     要实现以上的效果    分别绘制和擦除多余边框即可 ......
  • js数据结构变化 table动态列展示
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • 简单聊聊,HashMap、HashTable、ConcurrentHashMap 之间的区别
    一、直观上的区别HashTable和HashMap都是用于存储键值对的数据结构我们一般把搜索的数据称之为关键字(key),与关键字key对应的为值(value),这种模型统称为“key-value的键值对”。Map和Table采用的都是key-Value模型,例如:有一个字符串,统计其中每个字符出现的次数,......
  • 通过Handsontable实现像Excel一样编辑数据
    ​一、Handsontable是指什么?官网: http://handsontable.comHandsontable是一个JavaScript库,可以帮助您轻松实现类似Excel电子表格一样的编辑方式。在示范页面尝试一下就知道了,不仅可以像Excel那样输入数据,还有可指定单元格的格式、制作图表等丰富的功能。二、概要kintone作......
  • Bootstrap + Django - 前端bootstrap-table列表数据使用回调函数控制显示某一列数据
    前端bootstrap-table列表数据使用回调函数控制显示某一列数据1.效果1.有可以操作用户的权限,显示操作列2.无操作用户的权限,不显示操作列2.主要代码1.前端js<script>var$articlesTable=$('#table').bootstrapTable('destroy').bootstrapTable({url:'/team......
  • el-table树形数据勾选框子父级联
    element官网并没有配置树形数据勾选子父级联的配置,要想实现可以借助select、select-all事件和toggleRowSelection方法实现。select事件:点击查看代码onCheck(selection,row){if(!this.isTreeData)returnletstate=row.select?false:true......
  • element ui selectableRange 不生效,另一种方式实现时间选择范围限制
    selectableRange不生效可能是以为element版本问题,有条件的可以先升级elementui版本试试。使用picker-options实现时间选择范围限制直接上代码:<el-date-pickerv-if="viewer===''||viewer==='creator'||subTaskInfo.status!==2"v-model=......
  • 简单的string_builder和string_table
    一、有些时候需要逐步构建一个字符串,需要用到类似其它语言中的StringBuilder的组件。有必要自己写一个把它搞清楚。string_builder有两个基本操作。一个是push操作,向末尾追加一个字符,若空间不够就自动额外申请。一个是获取string操作,拿到最终的串,串以空字符结尾。其它格式化的功......