el-table实现自适应高度滚动,并处理fixed的错位问题

需求

页面只有一页,不能滚动。需要对长的table在内部设置滚动。

设置Scss

.el-table自身拥有 flex:1 这项css规则。

需要先为table的父级容器设置display: flex; flex-direction: column;

这样el-table的高度就可以自适应剩余空间。

再在scss文件中添加如下样式即可实现内部滚动。并且可以随着窗口大小的改变而变化。

.el-table {
    display: flex;
    flex-direction: column;
    .el-table__body-wrapper {
        flex: 1;
        overflow-y: auto;
    }
}

添加fixed的问题

为操作列的 el-table-column 添加 fixed=“right” 时,会造成固定列和滚动条重叠错位。

 这时如果强行修改样式,还会造成诸多细节性的样式问题。

例如:

        1. 垂直滚动条不出现

        2. table 滚动条的right-patch部分会漏出来表格内容

解决fixed错位问题

根据ElementUI网站的示例,只需要为el-table设置 max-height 属性即可。

设置一个较大的值即可,不需要通过方法动态获取table的高度。

况且通过window.onresize方法监听容易带来性能问题。

xxx.vue

<el-table ref="table" :max-height="2000">
...
</el-table>


如果修改了scrollbar的样式,需要根据scrollbar的宽度,对样式进行调整。

.el-table {
    display: flex;
    flex-direction: column;
    .el-table__body-wrapper {
        flex: 1;
        @extend .common-scrollbar;
    }
    &.el-table--scrollable-y .el-table__fixed-right {
        right: 6px!important;
    }
    &.el-table--scrollable-x {
      .el-table__fixed-body-wrapper {
        max-height: 100%!important;
      }
      .el-table__fixed-right {
        bottom: 6px!important;
      }
    }
    .el-table__fixed-right-patch {
        width: 6px!important;
    }
}

 .el-table--scrollable-y 的样式只有在配置了max-height 时才会出现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值