el-table合计功能滚动条层级问题

news2024/11/17 5:54:15

问题描述

版本:2.15.13
el-table在使用合计功能及固定列功能的同时,由于固定列的结构是固定区域增加了div加上定位,用来盖住下面的内容。当使用了合计功能的时候滚动条的区域在el-table__body-wrapper会导致固定列区域下的滚动条被挡住,当固定区域较大数据量较多的情况下存在滚动条全部滚动到固定区域无法回滚的问题。如下图:
在这里插入图片描述

建议修改方案

1.当使用了合计功能把对el-table__body-wrapper进行超出隐藏,将滚动条加到合计区域el-table__footer-wrapper,此时通过监听合计区域的滚动事件来触发el-table__body-wrapper的滚动。
2.使用虚拟滚动条:为el-table添加虚拟滚动条。通过虚拟滚动条的滚动来触发el-table__footer-wrapper和el-table__body-wrapper的滚动。
以上只针对于横向滚动条的提出问题
针对于以上处理需要隐藏原有滚动条,如果只考虑x方向会存在偏移问题如下图:
在这里插入图片描述

当前解决

针对于当前项目实现修改思路,自己写一个盒子盖住横向滚动条,然后内部元素宽度与table实际宽度保持一致,监听盒子滚动事件,盒子滚动多少,带动el-table滚动多少。测试代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <style>
        body {
            margin: 100px;
        }

        #yh-scrollbar-box {
            background: #F8F9FB;
            box-sizing: border-box;
            height: 15px;
            position: absolute;
            width: 100%;
            left: 0;
            z-index: 5;
            overflow-x: scroll;
        }
    </style>
</head>

<body>
    <div id="app">
        <el-table :data="tableData" border :height="700" ref="accountTable" show-summary>
            <el-table-column v-for="(col, index) in tableCol" :key="index" v-bind="col"></el-table-column>
        </el-table>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.13/index.js"></script>
    <script>
        const tableCol = [
            { label: '姓名', prop: 'name', minWidth: '186', fixed: 'left' },
            { label: '语文', prop: 'a', minWidth: '186' },
            { label: '数学', prop: 'b', minWidth: '180' },
            { label: '英语', prop: 'c', minWidth: '186' },
            { label: '物理', prop: 'e', minWidth: '186' },
            { label: '化学', prop: 'g', minWidth: '230' },
            { label: '生物', prop: 'h', minWidth: '292' },
            { label: '政治', prop: 'i', minWidth: '230' },
            { label: '历史', prop: 'j', minWidth: '292' },
            { label: '地理', prop: 'k', minWidth: '292' },
            { label: '体育', prop: 'l', minWidth: '292' },
            { label: '品德', prop: 'm', minWidth: '292' },
            { label: '总分', prop: 'sum', minWidth: '292', fixed: 'right' },
            { label: '平均分', prop: 'avg', minWidth: '292', fixed: 'right' }
        ]

        const tableData = [];
        const keys = tableCol.map(item => item.prop).slice(1, -2);
        for (let i = 0; i < 30; i++) {
            const obj = { name: `同学${i + 1}` };
            let sum = 0;
            keys.forEach(key => {
                obj[key] = parseInt(Math.random() * 100);
                sum += obj[key];
            })
            obj.sum = sum;
            obj.avg = ((sum * 1.0) / tableCol.length - 3).toFixed(2);
            tableData.push(obj)
        }
        new Vue({
            el: '#app',
            data() {
                return {
                    tableCol,
                    tableData
                }
            },
            mounted() {
                this.addVirtuallyScroll()
            },
            methods: {
                addVirtuallyScroll() {
                    this.$nextTick(() => {
                        const el = this.$refs.accountTable.$el;
                        if (el.querySelector('#yh-scrollbar-box')) {
                            el.removeChild(el.querySelector('#yh-scrollbar-box'));
                        }
                        const bodyWrapper = this.$refs.accountTable.$refs.bodyWrapper;
                        const contentWidth = bodyWrapper.querySelector('table').offsetWidth;
                        const bottom = this.$refs.accountTable.$refs.footerWrapper.offsetHeight;
                        const scrollbar = document.createElement('div');
                        scrollbar.setAttribute('id', 'yh-scrollbar-box');
                        scrollbar.style.bottom = (bottom - 1) + 'px';
                        const content = document.createElement('div');
                        content.style.width = contentWidth + 'px';
                        content.style.height = '10px';
                        scrollbar.appendChild(content);
                        scrollbar.addEventListener('scroll', function (e) {
                            const scrollLeft = e.target.scrollLeft;
                            const scrollTop = bodyWrapper.scrollTop;
                            bodyWrapper.scroll(scrollLeft, scrollTop);
                        })
                        el.appendChild(scrollbar)
                    })
                }
            },
        })
    </script>
</body>

</html>

效果图如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络三:运输层

一、运输层 1. 概述 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能&#xff0c;使得不同主机好像直接连在一起一样 运输层协议是在端系统中而不是在路由器中实现的。网络路由器仅作用于网络层分组(即数据报)的网络层字段&#xff0c;而不检查封装在该数据报…

微搭低代码学习之数据展示

低代码平台是一个快速发展的领域&#xff0c;未来有着广阔的发展前景。以下是一些低代码平台未来的发展方向&#xff1a; 1.人工智能和机器学习 随着人工智能和机器学习技术的不断发展&#xff0c;低代码平台将能够更好地利用这些技术来提高应用程序的智能化和自动化水平。例如…

APP渗透—绕过反代理、反证书检测

APP渗透—绕过反代理、反证书检测 1. 前言1.1. 无法获取数据包情况 2. 反代理2.1. 反代理情况2.1.1. 某牛牛反代理2.1.2. 某探反代理 2.2. 绕过反代理2.2.1. Proxifier设置2.2.1.1. 设置代理服务器2.2.1.2. 配置代理规则2.2.1.3. 检测状态 2.2.2. 抓包测试 2.3. 总结 3. 反证书…

用HTML+CSS简单的画一个支付宝页面(超详细)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

Pyqt实现合并PDF遇到的问题集合

1.exit code -1073740791报错 pycharm遇到如下报错&#xff1a; “Process finished with exit code -1073740791 (0xC0000409)” 就是遇到这种问题就不知道问题在哪里&#xff0c;有点摸不着头脑 解决措施&#xff1a; 1.点击导航栏“Run”后选择“Edit Configurations” …

Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

Keil使用 fromelf 生成bin文件

一、语法格式如下&#xff1a; fromelf [options] input_file [options] 选项如下&#xff0c;可以组合使用&#xff0c;两者之间用空格隔开&#xff1a; 二、在Keil中的使用过程 1、配置Output&#xff0c;生成可执行文件 aa即为可执行文件名&#xff0c;后缀为axf。…

十三、51单片机之EEPROM(I2C)

1、EEPROM简介 (1)存储设备类型&#xff1a;ROM、RAM、PROM(可编程ROM)、EPROM(可擦除ROM)、EEPROM(电可擦除ROM)。 (2)为什么需要EEPROM&#xff1f; 某些数据内容我们需要掉电不丢失且在程序运行中可以修改这些数据内容&#xff0c;这就需要用到EEPROM。 (3)EEPROM和flas…

家庭智能开关通断—Homekit智能

智能通断器&#xff0c;也叫开关模块&#xff0c;可以非常方便地接入家中原有开关、插座、灯具、电器的线路中&#xff0c;通过手机App或者语音即可控制电路通断&#xff0c;轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及&#xff0c;越来越多的人想将自己的家改…

Rust之泛型、特性和生命期(一):基本概念

开发环境 Windows 10Rust 1.69.0 VS Code 1.77.3 项目工程 这里继续沿用上次工程rust-demo 泛型、特性和生命期 每种编程语言都有有效处理概念重复的工具。在Rust中&#xff0c;一个这样的工具就是泛型&#xff1a;具体类型或其他属性的抽象替身。我们可以表达泛型的行为或…

IMX6ULL_Pro网卡配置

(15条消息) 【IMX6ULL_Pro板卡学习】配置 VMware 使用双网卡_vmware配置双网卡_爱学习的小莲的博客-CSDN博客https://blog.csdn.net/qq_52201194/article/details/127474352?ops_request_misc%257B%2522request%255Fid%2522%253A%2522168223524716800182730924%2522%252C%2522…

Windows逆向安全(一)之基础知识(十一)

二维数组 二维数组初始化 int arr[3][4]{{1,2,3,4},{5,6,7,8},{9,10,11,12} };查看反汇编 7: int arr[3][4]{ 8: {1,2,3,4}, 0040D498 mov dword ptr [ebp-30h],1 0040D49F mov dword ptr [ebp-2Ch],2 0040D4A6 mov dword …

CentOS(linux)使用Docker安装nacos

1. 拉取nacos镜像 docker pull nacos/nacos-server:2.0.3 2. 创建所需文件夹(以安装在home目录下为例) 1) 创建conf文件夹 mkdir -p /home/nacos/conf a. 新增文件application.properties(或者不增加该文件,会使用默认的) 文件内容如下: # spring server.servlet.contextP…

不知道玩什么游戏的你看过来

推荐一&#xff1a;原神 《原神》游戏设定在一个名为“蒂瓦特”的奇幻世界。 被神选中的人&#xff0c;将被赐予“神之眼”&#xff0c;引导“元素之力”&#xff0c;成为“旅者”。 在旅途中&#xff0c;结识性格各异、才华横溢、能力各异的小伙伴。 我们将一起战胜强大的敌…

PyTorch实战2:彩色图片识别(CIFAR10)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第P2周&#xff1a;彩色图片识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 目录 一、数据准备二、构建简单CNN网络⭐1. torch…

图扑软件 | 数字孪生智慧水泥工厂

前言 近年来&#xff0c;随着我国经济的发展和人民生活水平的提高&#xff0c;我国对于水泥行业的关注程度也越来越高&#xff0c;为了保证水泥行业的健康稳定发展&#xff0c;许多地方都在大力推动水泥生产技术创新工作。当前水泥行业的发展正处于新旧动能更迭的关键阶段&…

JavaWeb开发 —— SpringBootWeb综合案例

通过综合案例&#xff0c;我们来了解和学习在开发Web程序时&#xff0c;前端程序和后端程序以及数据库三者之间是如何交互、如何协作的&#xff0c;而通过综合案例也来掌握通过接口文档开发服务端接口的能力。 目录 一、准备工作 1. 需求说明 2. 环境搭建 3. 开发规范 二…

Postgis导出shp和gdb数据库(Postgre入门九)

背景 有时候我们需要将postgis数据库中的空间数据表导出shp格式,而PG自带的PostGIS Shapefile Import/Export Manager 导出shp大部分时候是可以用的,但是它有个缺点是,当shp字段名称超过10个字节时,字段会被切掉,如字段“afdskskkfkfjdj”被切掉后是“afdskskkfk”,所以…

文案自动修改软件-文案自动改写的免费软件下载

文章生成器ai写作机器人 随着人工智能技术的飞速发展&#xff0c;越来越多的新型产品被推向市场。其中&#xff0c;文章生成器AI写作机器人是一个备受关注的新兴行业。它使用机器学习和自然语言处理等技术&#xff0c;为用户自动生成高质量的文章和内容&#xff0c;帮助用户在…

基于OpenCV与深度神经网络——实现证件识别扫描并1比1还原证件到A4纸上

前言 1.用拍照的证件照片正反面&#xff0c;实现用证件去复印到A4纸上的效果&#xff0c;还有证件的格式化识别。 图1&#xff1a;把拍照的证件1比1还原证件到A4纸上 图2&#xff1a;证件OCR格式化识别 2.使用Yolo做目标识别,Enet做边缘检测&#xff0c;Paddle OCR做文字识别&…