隐藏菜单向下滚动并显示向上滚动
问题描述:
我做了这段代码隐藏菜单向下滚动并显示在向上滚动但我有一些问题,当我滚动到顶部菜单仍然有固定的位置,我怎么能解决这个问题,谢谢!
JAVSCRIPT:隐藏菜单向下滚动并显示向上滚动
$(window).bind('scroll', function() {
if ($(window).scrollTop() > 500) {
$('.mainmenu').addClass('nav-down');
}
});
// Hide Header on on scroll down
var didScroll;
var lastScrollTop = 0;
var delta = 5;
var navbarHeight = $('.mainmenu').outerHeight();
$(window).scroll(function(event){
didScroll = true;
});
setInterval(function() {
if (didScroll) {
hasScrolled();
didScroll = false;
}
}, 500);
function hasScrolled() {
var st = $(this).scrollTop();
// Make sure they scroll more than delta
if(Math.abs(lastScrollTop - st) <= delta)
return;
// If they scrolled down and are past the navbar, add class .nav-up.
// This is necessary so you never see what is "behind" the navbar.
if (st > lastScrollTop && st > navbarHeight){
// Scroll Down
$('.mainmenu').removeClass('nav-down').addClass('nav-up');
} else {
// Scroll Up
if(st + $(window).height() < $(document).height()) {
$('.mainmenu').removeClass('nav-up');
}
}
lastScrollTop = st;
}
CSS:
.mainmenu {
background: #222;
height: 50px;
padding: 0 15px;
width: 80%;
margin: 0 auto;
}
.nav-down{
position: fixed;
top: 0;
transition: top 0.2s ease-in-out;
width: 100%;
}
.nav-up {
top: -50px;
}
演示:jsfiddle
答
添加其他对您scrollTop的使用removeClass和你应该罚款,我测试了它和它的作品。这里
$(window).bind('scroll', function() {
if ($(window).scrollTop() > 500) {
$('.mainmenu').addClass('nav-down');
}
else
{
$('.mainmenu').removeClass('nav-down');
}
});
答
要你先监听器,只需添加一个else语句如下:
$(window).bind('scroll', function() {
if ($(window).scrollTop() > 150)
$('.mainmenu').addClass('nav-down');
else
$('.mainmenu').removeClass('nav-down');
});
还要注意的是,你不需要为第二听者setInterval()
,看到jsfiddle
+0
非常感谢,菜单正在工作:)但是当菜单消失时,如菜单出现时我可以添加转换,因为当我向下滚动菜单时直接隐藏。 – Uikithemes
谢谢这么多,菜单正在工作:)但我可以添加转换菜单消失时,就像菜单出现时,因为当我向下滚动菜单直接隐藏。 – Uikithemes