自定义指令解决elementUI中table组件的column设置fixed属性后,滚动时表格无法对齐的问题

问题: el-table组件中,column在设置了fixed属性的情况下下,垂直滚动会出现表格错位的问题。

分析: column在设置了fixed=“left”或fixed=“right”后,在table的对应位置增加了对应个数的column,它们都被设置为position: fixed。下面的table只是被固定的column遮盖,当垂直方向有滚动事件时,两侧固定column会动态计算滚动高度。但是实际使用中计算的时候会受头部样式或padding的影响而计算出错,导致出现表格错位的问题。

解决方式:

        笔者是给table组件添加自定义指令解决的,有兴趣的朋友可以自己封装组件。

   代码如下:

// 解决table组件添加fixed属性滚动时表格错位问题

Vue.directive('fixed-scroll', {

            inserted: function (el) {

                // 获取tablebody 

                let targetEl = document.querySelector(".el-table .el-table__body-wrapper");           

                // 监听滚动事件

                targetEl.addEventListener("scroll", setFixedScrollTop);

                function setFixedScrollTop(params) {

                    // table滚动的高度

                    let top = target.scrollTop;

                     

                  //  获取table头部

         let tableHead = document.querySelector(".el-table .el-table__header-wrapper");

                  // 头部的高度

                   let height = tableHead.clientHeight;

                    // 左定位盒子

                    let fixedLeft = document.querySelector(".el-table__fixed .el-table__fixed-body-wrapper");

                    // 右定位盒子

                    let fixedRight = document.querySelector(".el-table__fixed-right .el-table__fixed-body-wrapper");

                    // 向上偏移量

                    let fixedTop = height - top;

                    if (fixedLeft) fixedLeft.style.top = fixedTop + "px"

   

                    if (fixedRight) fixedLeft.style.top = fixedTop + "px"

                }

                

            }

       

    })

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值