微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VUE 实现滚动监听 导航栏置顶的方法

HTML

非重点的代码,比如样式啥的,我就不放上来了,一笔带过

简略的写一下HTML代码,可以对照文章最后的效果图看,应该不难理解

rush:js;">
ottom: paddingBottom}">
资源信息

<div id="fixedBar" :class="{ fixedBar: isFixed }">

<div :style="{ marginTop: marginTop }">

<footer class="footer">

VUE

1. data ()

rush:js;"> data () { paddingBottom: '1.5rem',// 给最外层div一个padding-bottom // 因为footer是fixed定位 如果padding-bottom为0 数据列表拉到最下面的时候 会有部分数据被footer挡住

isFixed: false,// bar浮动
offsetTop: 0,// 触发bar浮动的阈值
marginTop: 0,// 触发bar浮动的同时 给数据列表一个margin-top 防止列表突然上移 会很突兀

advertShow: true,// 广告显示
}

2. mounted ()

rush:js;"> mounted () { // 设置初始的 padding-bottom 值为 footer 的高度 +20 防止数据列表拉到最下面被footer挡住 +多少自定 this.paddingBottom = document.querySelector('.footer').offsetHeight + 20 + 'px';

// 设置bar浮动阈值为 #fixedBar 至页面顶部的距离
this.offsetTop = document.querySelector('#fixedBar').offsetTop;

// 开启滚动监听
window.addEventListener('scroll',this.handleScroll);
}

3. methods

{ this.paddingBottom = document.querySelector('.footer').offsetHeight + 20 + 'px'; }); },// 滚动监听 滚动触发的效果在这里 handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;

if (scrollTop >= this.offsetTop) {
this.isFixed = true;
this.marginTop = document.querySelector('#fixedBar').offsetHeight + 'px';
} else {
this.isFixed = false;
this.marginTop = 0;
}
}
}

4. destroyed ()

rush:js;"> destroyed () { window.removeEventListener('scroll',this.handleScroll); // 离开页面 关闭监听 不然会报错 }

效果

以上这篇VUE 实现滚动监听 导航栏置顶方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐