我也不是最伟大的 JQuery 艺术家,但我认为这应该可行:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
mywindow.scroll(function() {
if(mywindow.scrollTop() > mypos)
{
$('.myDIV').fadeOut();
}
else
{
$('.myDIV').fadeIn();
}
mypos = mywindow.scrollTop();
});
您可以看到mypos
每次用户向上或向下滚动时都会更新。
编辑
我在小提琴中根据您的要求进行了一些更新:http: //jsfiddle.net/GM46N/2/。您可以在小提琴的 js 部分中看到我做了两个选项 - 一个是 with.fadeIn()
和.fadeOut()
(这次工作 - 在您的网站上我提供的代码没有运行),第二个是使用.slideToggle()
.
这是更新的js:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
var up = false;
var newscroll;
mywindow.scroll(function () {
newscroll = mywindow.scrollTop();
if (newscroll > mypos && !up) {
$('.header').stop().slideToggle();
up = !up;
console.log(up);
} else if(newscroll < mypos && up) {
$('.header').stop().slideToggle();
up = !up;
}
mypos = newscroll;
});
我还添加了一个额外的变量 ,up
仅在用户第一次向上滚动时触发事件,而下一次触发切换是当他向下滚动时等等。否则,事件会在任何时候触发(您可以通过使用前面的代码来测试它.slideToggle()
以查看大量的事件触发)。
重新编辑:我还添加了.stop()
,所以现在如果仍然有运行效果,该效果会首先停止,以防止用户快速上下滚动时出现滞后。