对scroll进行防抖的优化(在vue中使用防抖)
目标效果:在一个长内容的页面中,当滚动到一定的距离时,会出现一个 "返回顶部" 的图标,点击会平滑的返回到页面顶部,有助于提升用户体验。
HTML
<div class="backtop" @click="backtop" ref="top">TOP</div>
CSS
.backtop {
position: fixed;
bottom: 30px;
right: 25px;
background-color: rgba(0, 0, 0, 0.45);
opacity: 0;
visibility: hidden;
transition: all 0.25s;
}
.backtop:hover {
opacity: 0.8;
cursor: pointer;
}
.backtop.fade {
opacity: 1;
visibility: visible;
}
给scroll事件绑定逻辑
methods: {
handleScrollEvent() {
//backTop
const target = this.$refs.top;
if (scrollTop > 200 && !target.classList.contains("fade")) {
target.classList.add("fade");
}
if (scrollTop < 200 && target.classList.contains("fade")) {
target.classList.remove("fade");
}
},
在vue中使用防抖优化scroll
只要滚动页面就会不断的触发scroll事件,非常影响性能,所以选择防抖优化。
用户 scroll 和 resize 行为(即是滑动页面和改变窗口大小)会导致页面不断的重新渲染。
created() {
this.scrollEvent = this.debounce(this.handleScrollEvent, 2000);
},
methods: {
debounce(fn, delay) {
// console.log("debounce");
let timeout = null;
return function () {
let context = this;
let args = arguments;
if (timeout) clearTimeout(timeout);
timeout = setTimeout(() => {
fn.apply(context, args);
}, delay);
};
},
}
参考文章
https://blog.csdn.net/qq_27626333/article/details/81458824
https://www.cnblogs.com/coco1s/p/5499469.html
https://juejin.cn/post/7034458741990752287
本文作者:pocoui
本文链接:https://www.cnblogs.com/poco-o/p/16843824.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步