gpt4 book ai didi

javascript - 导航栏在滚动上显示/隐藏,如脉冲淡入淡出效果

转载 作者:行者123 更新时间:2023-12-03 07:49:32 27 4
gpt4 key购买 nike

我的 JS 脚本有问题,它会在向下滚动时隐藏导航栏并在向上滚动时显示它。

问题是导航栏在向上滚动时一次又一次地显示和隐藏,向下滚动时也是如此。

此外,当我向上滚动到页面顶部时,导航栏隐藏在顶部。

如何用我的脚本解决这个问题?

这是我的代码:

var lastScrollTop = 0;
$(window).scroll(function() {
var currentScrollTop = $(this).scrollTop();
if (currentScrollTop > lastScrollTop) {
$(".header").fadeOut();
} else {
$(".header").fadeIn();
}
lastScrollTop = currentScrollTop;
});

最佳答案

您的代码正在触发多个滚动事件,直到滚动操作没有停止,因此您需要做的是仅在滚动操作完全停止时触发目标事件处理程序,这是通过称为 的技术来完成的去抖逻辑

function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};

// call debounce logic by passing target event handler
var optimisedFunc= debounce(function() {
var currentScrollTop = $(this).scrollTop();
if (currentScrollTop > lastScrollTop) {
$(".header").fadeOut();
} else {
$(".header").fadeIn();
}
lastScrollTop = currentScrollTop;
}, 250);

$(window).scroll(function(){
optimisedFunc();
});

上面的去抖逻辑不仅仅只是延迟执行,引用this了解更多信息。

关于javascript - 导航栏在滚动上显示/隐藏,如脉冲淡入淡出效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com