el-table表头下滑时吸顶

addEventListener第三个参数,布尔值或者详细对象,如果布尔值为true,表示在捕获阶段触发事件。 

<template>
  <Table
    ref="table"
    id="query-table-fixed"
    :reserve-selection="true"
    row-key="id"
    v-model:page="page"
    v-loading="loading"
    :showIndex="false"
    :data="tableData"
    @getTableData="getTableData"
    @selection-change="handleSelectionChange"
    >
  </Table>
</template>

<script>
  //设置了滑动监听,不能给组件设置maxHeight,不然有可能因为组件高度不够,不会触发监听
  onMounted(() => {
    window.addEventListener('scroll', handleScroll, true);
  })

  const handleScroll = (e: any) => {
    // el-main区域才有滚动条
    if (e.target.__vnode.props.class !== 'el-main') return;
    //获取table距离header的距离
    // let tableTop = document.getElementById('query-table-fixed').offsetTop - 33;
    let tableTop = document.getElementById('query-table-fixed').offsetTop;
    //获取当前滚动条离顶部的高度
    let scrollTop = e.target.scrollTop;
    // 获取到table-header的dom
    let tableWrapper = document.getElementsByClassName('el-table__header-wrapper')[0];

    if (scrollTop >= tableTop) {
      tableWrapper.classList.add('fixed-table');
    } else {
      tableWrapper.classList.remove('fixed-table');
    }
  };

  // 组件销毁时要清除。
  onBeforeUnmount(() => {
    window.removeEventListener('scroll', handleScroll);
  });
</script>

<style>
  .fixed-table {
    position: fixed;
    top: 44px;
    z-index: 999;
  }
</style>

参考:addEventListener() 方法_帅气与大侠的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值