ElementUI表格el-table表头固定自适应高度解决方案

ElementUI动态表头固定与自适应高度技巧
当使用ElementUI的el-table组件时,遇到无法预设固定高度但需要表头固定的情况,官方的高度设置可能不适用。一种解决办法是通过CSS实现表格整体自适应高度并滚动,但这会导致表头滚动。另一种方法是隐藏原表头,手动创建表头,虽然可行但编写繁琐。本文介绍一种更简洁的方法,利用getBoundingClientRect动态设置el-table的height,达到表头固定且表体自适应高度的效果。记得在data中添加tableHeight属性,并为父容器添加ref=“tableContainer”。

el-table header固定body高度自适应并滚动

elementui官方给出的header固定body滚动方案仅需给height属性赋值,但当我们遇到并不能写死height的情况,或许你会抛弃height,通过css使整个表格高度自适应并滚动,但表头也会被滚上去,就很不优雅。这时你可能会想到通过:show-header="false"隐藏表头并在上方另写一表通过配置css仅显示该表的表头,曲线救国,实现表头固定表体高度自适应并滚动(实际上,这是我 灵机一动 想到的,也确实这么做了,也不是不行,就是写起来蛮怪的是🙆‍♂️)。

我们只需依赖 getBoundingClientRect 动态赋值el-table的height。

参考:ElementUI表格el-table表头固定自适应高度解决方案

<el-table 
	:data="tableData"
	:height="tableHeight">
</el-table>             

记得data里加tableHeight,给父容器加上ref=“tableContainer”

  data() {
    return {
      tableHeight: null,	// Null或者先给个默认的大小
      timer: 0
    }
  },
  mounted() {
    this.calHeight()
    window.addEventListener('resize', this.onResize)
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer)
    window.removeEventListener('resize', this.onResize)
  },
  methods: {
    // 根据父元素高度改变表格高度
    calHeight() {
      this.$nextTick(() => {
        // Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置
        const rect = this.$refs.tableContainer.getBoundingClientRect()
        // this.tableHeight = rect.height - 24  // 若有分页,减去分页高度
        this.tableHeight = rect.height
      })
    },
    // 监听界面resize调calHeight更新表格高度
    onResize() {
      this.timer && clearTimeout(this.timer)
      this.timer = setTimeout(() => {
        this.calHeight()
      }, 100)
    },
  }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值