页面滑动,导航栏吸顶效果

1、组件挂载时—监听页面滚动,事件内传入回调

2、当滑动距离超过一定距离,开启fixed

3、组件销毁时,取消监听

data(){
    return {
         widthLength: '',
    }
}

mounted() {
     // 页面监听scroll事件,并传入回调
    window.addEventListener("scroll", this.handleScroll);
},

destroyed() {
    // 取消监听
    window.removeEventListener("scroll", this.handleScroll);
},

methods:{
    // 处理页面滚动
    handleScroll() {
      var scrollTop =
        window.pageYOffset ||
        document.documentElement.scrollTop ||
        document.body.scrollTop;
        // 
        var offsetTop = document.querySelector(".selecter").offsetHeight;

      // 吸顶效果
      if (scrollTop > offsetTop) {
        this.isFixed = true;   // 开启吸顶
        const menuWidth = this.isHeaderStick ? 0 : this.menuCollapse ? 80 :         Setting.menuSideWidth;
        this.widthLength =  this.isMobile || !this.headerFix ? {} : {  
          width: `calc(100% - ${menuWidth + 48}px)`
        };
      } else {
        this.isFixed = false;  // 
        this.widthLength = '';  
      }
}
// 筛选组件
<div class="selecter" :class="{ fixed: isFixed }" :style="widthLength? widthLength:''">
     <dimension-selecter @submit="selecterSubmit" :flag="flag"></dimension-selecter>
</div>

 多个页面若同时要增加吸顶效果,可将handleScroll方法提取到mixins里,混入到各个组件中使用,每个组件中只需要在生命周期内监听事件即可。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值