element ui Table组件内容自适应的情况下实现表头相对页面固定

  • Post author:
  • Post category:其他


一、element ui Table 只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码。此时有一个弊端,如果页面布局内容较多,会出现两个滚动条,一个table的一个页面的,我们的需求是页面高度随着数据数量而自适应撑开,而不是固定table视窗的高度

二、效果图对比如下:

在这里插入图片描述

在这里插入图片描述

三、实现步骤

1、首先监听页面滚动事件、因为滚动事件触发太过频繁我就带了500毫秒的节流


mounted() {
    window.addEventListener('scroll', this.throttle(this.test), true)
  },

methods: {
	test(e) {
      let head = this.$refs.table.$el
      if(e.target.scrollTop > head.offsetTop) {
        this.fixedHeader = true
      } else {
        this.fixedHeader = false
      }
    },

    throttle(fn, delay = 500) {
      let flag = true
      return (...args) => {
        if (!flag) return
        flag = false
        setTimeout(() => {
          fn.apply(this, args);
          flag = true
        }, delay)
      }
    }
}

	

2、获取table元素的offsetTop 并与e.target.scrollTop对比,当他们相等时表示table滚动到了top:0的位置,此时固定表头及fixedHeader = true

3、通过为table增加class的办法通过css固定表头

:class="fixedHeader ? 'fixedHeader' : '' "
.fixedHeader .el-table__header-wrapper {
  position: fixed;
  top: 76px;
  z-index: 1000;
}

需要注意的是此时style标签中不要加scoped否则不生效。



版权声明:本文为weixin_45440813原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。