el-table表格通过vue-seamless-scroll实现表格滚动(html + Vue + Element-UI)



前言

el-table表格滚动可以通过定义两个table实现,第一个table展示标题,第二个table展示滚动内容。把内容放在vue-seamless-scroll组件中即可。


一、vue-seamless-scroll是什么?

vue-seamless-scroll是一个为Vue.js设计的轻量级无缝滚动组件,它能实现元素列表在达到边界时平滑循环滚动的效果。支持自定义滚动方向、速度等,适用于制作动态新闻栏、图片轮播等场景。

二、使用步骤

1.引入JS库

代码如下:

    <!-- 引入ElementUI样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入ElementUI组件必须先引入Vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
    <!-- 引入 滚动插件 -->
    <script src="https://unpkg.com/vue-seamless-scroll/dist/vue-seamless-scroll.min.js"></script>
    <!-- 引入ElementUI组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>

2.完整代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格滚动</title>

    <!-- 引入ElementUI样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入ElementUI组件必须先引入Vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
    <!-- 引入 滚动插件 -->
    <script src="https://unpkg.com/vue-seamless-scroll/dist/vue-seamless-scroll.min.js"></script>
    <!-- 引入ElementUI组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>

    <style>
        /* 滚动表格 */
        .scroll_table {margin: 15px;display: flex;}
        .scroll_table_s1{display: inline-block; width: 100%}
         /*隐藏第一个table内容*/
        .title_table .el-table__body-wrapper {display: none;}
        .seamless-warp {height: 200px;overflow: hidden;}
        /*隐藏第二个table表头*/
        .table_scroll .el-table__header-wrapper {display: none;}

    </style>
</head>
<body>
    <div id="app">
        <!--?el-table使用vue-seamless-scroll实现自动滚动-->
        <div class="scroll_table">
            <div class="scroll_table_s1">
                <el-table class="title_table" size="mini" stripe style="width: 100%" border header-align="center">
                    <el-table-column v-for="(item,index) in columns" :key="index+'i'" :label="item.label" :prop="item.prop" min-width="120"/>
                </el-table>
                <vue-seamless-scroll :data="tableList" class="seamless-warp" style="width: 100%" :class-option="scrollClassOption">
                    <el-table :data="tableList" v-if="tableList.length > 0" class="table_scroll" stripe style="width: 100%" border header-align="center" min-width="120">
                        <el-table-column v-for="(item,index) in columns" :key="index+'i'" :label="item.label" :prop="item.prop"/>
                    </el-table>
                </vue-seamless-scroll>
            </div>
          </div>
    </div>
    <script type="text/javascript">
        let _this = this;
        const vm = new Vue({
            // 配置选项(option)
            el: '#app',
            data: {
                columns: [
                    { prop: 'id', label: '序号', sort: true },
                    { prop: 'name', label: '姓名', sort: true },
                    { prop: 'date', label: '日期', sort: true },
                    { prop: 'address', label: '地址', sort: true },
                ],
                tableList: [
                    {
                        id: 1,
                        date: '2016-05-02',
                        name: '王小虎',
                        address: '上海市普陀区金沙江路 1518 弄'
                    },
                    {
                        id: 2,
                        date: '2016-05-04',
                        name: '王小虎',
                        address: '上海市普陀区金沙江路 1517 弄'
                    },
                    {
                        id: 3,
                        date: '2016-05-01',
                        name: '王小虎',
                        address: '上海市普陀区金沙江路 1519 弄'
                    },
                    {
                        id: 4,
                        date: '2016-05-03',
                        name: '王小虎',
                        address: '上海市普陀区金沙江路 1516 弄'
                    }
                ]
            },
            mounted() {

            },
            computed: {
                scrollClassOption() {
                    return {
                        step: 0.5, // 数值越大速度滚动越快 0.8
                        limitMoveNum: this.tableList.length, // 开始无缝滚动的数据量 
                        hoverStop: true, // 是否开启鼠标悬停stop
                        direction: 1, // 0向下 1向上 2向左 3向右
                        openWatch: true, // 开启数据实时监控刷新dom
                        singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
                        singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
                        waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
                    }
                }
            },
            methods: {

            }
        })
    </script>
</body>
</html>


实现效果

在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue实现带有固定表头和滚动效果的滚动表格,你可以按照以下步骤进行操作: 1. 首先,创建两个`el-table`组件。第一个`el-table`用于显示固定的表头,而第二个`el-table`则放置在一个滚动组件内,并用于显示滚动的表体。 [1] 2. 隐藏第一个`el-table`的表体部分,以使其只显示表头。这可以通过设置`show-header`属性为`false`来实现。 [1] 3. 隐藏第二个`el-table`的表头部分,同时将其放置在一个具有固定高度的滚动组件中(例如使用`vue-seamless-scroll`插件)。这样,整个表格都会有滚动效果。 [1 [2] 4. 使用`vue-seamless-scroll`插件,你需要在项目中安装该插件。通过运行命令`npm install vue-seamless-scroll --save`来安装插件。 [2] 5. 在`main.js`文件中,引入并注册`vue-seamless-scroll`插件。 [2] 综上所述,你可以按照以上步骤在Vue实现带有固定表头和滚动效果的滚动表格。如果需要更详细的代码示例和使用说明,你可以参考`vue-seamless-scroll`的GitHub开源地址。 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue3 el-table结合seamless-scroll实现表格数据滚动](https://blog.csdn.net/wkh___/article/details/125638796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【el-table固定表格头循环滚动vue结合vue-seamless-scroll操作表格自动滚动效果](https://blog.csdn.net/weixin_50790427/article/details/121698352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值