vue中el-table滚动到下面吸顶效果实现

//此方法用于
    checkTableHeader(e) {
      // 获取滚动条滚动的高度
      let scrollTop = e.target.scrollTop;
      // 先获取父盒子的距离顶部的高度,从而算出子盒子的高度。
      let offsetTop = document.getElementsByClassName("pro-det-bottom")[0]
        .offsetTop;

      let contentWidth = `${window.innerWidth - 270}px`;

     
      // 当子盒子距离顶部的距离 小于滚动的高度,使子盒子吸顶。
      if (scrollTop > offsetTop - 50) {
        // 判断当前是否已经固定。headerStatus优化值 可有可无。
        if (!this.headerStatus) {
          this.headerStatus = true;
          // 当前子盒子要在父盒子中横向滚动 所以使用absolute 绝对定位。
          document.getElementsByClassName(
            "el-table__header-wrapper"
          )[0].style.position = "fixed";
          document.getElementsByClassName(
            "el-table__header-wrapper"
          )[0].style.zIndex = "500";
          document.getElementsByClassName(
            "el-table__header-wrapper"
          )[0].style.width = contentWidth;
        }
        // 绝对定位 top值需要一直改变 所以动态添加top值
        document.getElementsByClassName(
          "el-table__header-wrapper"
        )[0].style.top = ` 90px`;
      } else {
        this.headerStatus = false;
        document.getElementsByClassName(
          "el-table__header-wrapper"
        )[0].style.transform = `translate3d(0px, 0px, 0px)`;
        document.getElementsByClassName(
          "el-table__header-wrapper"
        )[0].style.position = "relative";
        document.getElementsByClassName(
          "el-table__header-wrapper"
        )[0].style.top = ` 0px`;
        document.getElementsByClassName(
          "el-table__header-wrapper"
        )[0].style.width = contentWidth;
      }
    },

html

  <div class=" pro-det-bottom">
                   

                   滚动列表
                </div>

调用

// 监听滚动条事件
    document.addEventListener("scroll", this.checkTableHeader, true);

删除监听

  destroyed() {
    document.removeEventListener("scroll", this.checkTableHeader, true);
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值