我正在尝试创建一个jQuery代码段,使我能够根据用户当前的滚动位置为div添加4个不同的类。
所需的状态是: 1.用户位于页面顶部 2.用户位于页面底部 3.用户向下滚动 4.用户向上滚动
在下面的代码中我获得了1号和1号。 2,但我不能得到3& 4工作。
有人可以帮忙吗?感谢。
// Add/remove classes to navigation based on position
var scrollPosition = $(window).scrollTop();
$(window).bind( 'load scroll', function(){
// User is at bottom of window
if($(window).scrollTop() + $(window).height() === $(document).height()) {
$('#global-header').removeClass().addClass('at-bottom');
// User is at top of window
} else if ($(window).scrollTop() === 0) {
$('#global-header').removeClass().addClass('at-top');
} else {
$('#global-header').removeClass();
}
});
答案 0 :(得分:1)
在这里你有一个工作解决方案捕获以前的解决方案(正如@Taplar的评论中所建议的那样):
// Add/remove classes to navigation based on position
var scrollPosition = $(window).scrollTop();
var threshold = 12;
var hideHeaderOnScrollDelay = 200;
var lastScrollPosition = 0;
$(window).bind('load scroll', function() {
// User is at bottom of window
if ($(window).scrollTop() + $(window).height() >= $(document).height()) {
$('#global-header').removeClass().addClass('at-bottom');
// User is at top of window
} else if ($(window).scrollTop() === 0) {
$('#global-header').removeClass().addClass('at-top');
} else {
if ($(window).scrollTop() - lastScrollPosition > threshold) {
$('#global-header').removeClass().addClass('at-bottom');
} else if (lastScrollPosition - $(window).scrollTop() > threshold) {
$('#global-header').removeClass().addClass('at-top');
}
}
lastScrollPosition = $(window).scrollTop();
});

#global-header {
position: fixed;
width: 100%;
height: 60px;
background-color: #006688;
color: white;
text-align: center;
line-height: 60px;
display: none;
}
#global-header.at-top,
#global-header.at-bottom {
display: block;
}
#global-header.at-bottom {
bottom: 0px;
}
#content {
height: 600px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="global-header">HEADER</div>
<div id="content"></div>
&#13;
答案 1 :(得分:0)
感谢@ raul.vila的工作解决方案。这个答案是一个简化版本,目的是添加4个类,.at-top,.at-bottom,.scrolling-up和.scrolling-down。它还会保留这些类,直到另一个类变为活动状态为止。
// Add/remove classes to navigation based on position
var lastScrollPosition = 0;
$(window).bind('load scroll', function() {
// User is at top of window
if ($(window).scrollTop() === 0) {
$('#global-header').removeClass().addClass('at-top');
// User is at bottom of window
} else if ($(window).scrollTop() + $(window).height() >= $(document).height()) {
$('#global-header').removeClass().addClass('at-bottom');
// User is scrolling down
} else if (lastScrollPosition < $(window).scrollTop()) {
$('#global-header').removeClass().addClass('scrolling-down');
// User is scrolling up
} else {
$('#global-header').removeClass().addClass('scrolling-up');
}
lastScrollPosition = $(window).scrollTop();
});