Javascript 粘性导航元素-隐藏然后显示
我有一个粘性导航我正在工作,我能够收集一些代码从一些其他职位,但我遇到了一个问题,导航区域我隐藏后,滚动到页面顶部时不会显示回来。我试图写一个else-if语句,但是运气不好,谢谢Javascript 粘性导航元素-隐藏然后显示,javascript,jquery,Javascript,Jquery,我有一个粘性导航我正在工作,我能够收集一些代码从一些其他职位,但我遇到了一个问题,导航区域我隐藏后,滚动到页面顶部时不会显示回来。我试图写一个else-if语句,但是运气不好,谢谢 $(window).scroll(function(){ if($("#navheader").offset().top <= $(window).scrollTop) $("#navheader").css({"display":"block","top":"0px", "left":"0
$(window).scroll(function(){
if($("#navheader").offset().top <= $(window).scrollTop)
$("#navheader").css({"display":"block","top":"0px", "left":"0px"});
else
$("#navheader").css({"display":"none"});
});
$(窗口)。滚动(函数(){
if($(“#navheader”).offset().top如果您使用console.log:
console.log($("#navheader").offset().top)
在scroll事件中,您将看到一旦IF语句变为true,它将始终返回0。因为元素是固定的,并且它具有top:0,所以它将始终具有0
你问的解决方案是什么
生成offest全局变量并检查它
var navOff = $("#navheader").offset().top;
$(window).scroll(function(){
if(navOff <= $(window).scrollTop())
$("#navheader").css({"display":"block","top":"0px", "left":"0px"});
else
$("#navheader").css({"display":"none"});
});
var navOff=$(“#navheader”).offset().top;
$(窗口)。滚动(函数(){
如果(navOff这可能更容易
问题似乎是您需要在窗口的上的滚动顶部之后添加()
var n = $("#navheader");//get nav
var nh = n.offset().top;//get nav offset
var go = true;//toggle execute so it doesn't fire on every match
$(window).scroll(function(){
var wh = $(this).scrollTop();//window scroll
if(wh <= nh && !go) {//show
n.show();
go = true;
} else if (wh > nh && go) {//hide
n.hide();
go = false;
}
});
var n=$(“#navheader”);//获取nav
var nh=n.offset().top;//获取导航偏移
var go=true;//切换执行,使其不会在每次匹配时触发
$(窗口)。滚动(函数(){
var wh=$(this).scrollTop();//窗口滚动
如果(wh-nh&&go){//隐藏
n、 隐藏();
go=假;
}
});
拉小提琴:
编辑:添加了一个go
切换,用于在if/then的每一个匹配项上停止激发。这样,它每一个方向激发一次