element-ui table表头,合计行吸顶功能并且兼容固定行问题

前面我发了一篇表头吸顶功能的文章,通过js计算性能消耗较高比较复杂,下面这个方法纯利用css的定位功能实现,比较简单方便。
<template>

  <div class="stickyTable">

    <!-- 所需要的数据自己加,我只给了实现功能部分的代码 -->

    <el-table :class="{'stickyCss': stickyShow}"></el-table>

  </div>

</template>

<script>

export default {

  mounted(){

    window.addEventListener('scroll', this.handleScroll,true);

  },

  beforeDestroy () {

    window.removeEventListener('scroll', this.handleScroll,true)

  },

  data () {

    return {

      stickyShow: false,// 控制所有吸顶样式,当滚动事件触发表格头部超出滚动区域

    }

  },

  methods: {

    handleScroll(event) {

     if (!event.target.scrollLeft) {

        let t1 = document.querySelector('.stickyTable').getBoundingClientRect().top;//表格盒子离视图顶部的距离

        let t2 = document.querySelector('.el_main').getBoundingClientRect().top;//所在滚动区域也是表头要定位的区域离视图顶部距离

        let t = t2-t1

        if (t >= 39) { // 这里可以设置合适的值,当你滑动到一定位置时出现吸顶的样式效果

          this.stickyShow = true

        } else {

          this.stickyShow = false

        }

      }

    },

  }

}

</script>

<style lang="scss" scoped>

.stickyCss {

  overflow: visible;

  ::v-deep .el-table__header-wrapper {

    position: sticky;

    top: 0;

    z-index: 9;

  }

  ::v-deep .el-table__footer-wrapper {

    position: sticky;

    top: 40px;

    z-index: 9;

  }

  ::v-deep .el-table__fixed {

    overflow: visible;

    .el-table__fixed-body-wrapper {

      width: 100%;

      overflow: hidden;

    }

    .el-table__fixed-header-wrapper {

      position: sticky;

      top: 0;

      z-index: 10;

      width: 100%;

      overflow: hidden;

    }

    .el-table__fixed-footer-wrapper {

      position: sticky;

      top: 40px;

      z-index: 10;

      width: 100%;

      overflow: hidden;

    }

  }

}

</style>
核心思想就是滚动条滑动到一定程度时,通过定位table表格的表头或者表尾合计行的位置来实现吸顶功能
至于想要符合你的需求的样式都可以审查处理,我已经亲测过没有任何问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容