el-table横纵向滚动条固定在可视屏幕内,并自适应分辨率(2.0)

文章介绍了一种方法,通过监听resize事件动态计算table在可视窗口中的适配高度,避免fixed列错位问题。在组件中封装此功能,可以方便地应用到多个表格。主要涉及returnTableHeight函数计算高度,resizeTable处理窗口resize事件,以及在mounted和destroyed生命周期钩子中的相应操作。最终确保表格在不同分辨率和窗口大小下都能适应显示,且外层无滚动条。
摘要由CSDN通过智能技术生成

前言

提示:基于上篇文章,使用了fixed固定列的 表格会出现错位后,换一种方法实现滚动条固定在可视屏幕,并自适应分辨率。

建议写在封装后的table组件中,不然一个一个加太麻烦。

原理:通过监听resize事件动态获取table的dom,离可视窗顶部的距离,传入的离底部的值,视窗高度,计算出table高度,设施给el-table组件自带属性height或maxHeight。


在方法中:

//table自动高度
returnTableHeight(ref,bottomOffset) {
  let height = null
  height = window.innerHeight - ref.getBoundingClientRect().top - bottomOffset
  return height
}


resizeTable() {
  this.$nextTick(() => {
     this.tableHeight = this.returnTableHeight(this.$refs.tableDom, 100)
  }, 0)
},

在mounted中:

mounted() {
    var _this = this
    this.resizeTable()
    window.onresize = function () {
      _this.resizeTable()
    }
  },
//记得清空  如果在keepalive中 则使用activated  deactivated
  destroyed(){
    window.onresize = null
  },

在html中:ref需要写在外层div中

<div ref="tableDom">
      <el-table v-loading="loading" :data="dataList" :maxHeight="tableHeight" border>
      </el-table>
</div>

总结

这样在不同分辨率,视窗不同大小的环境下 table都会在视窗中,且外层视窗不会出现滚动条。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值