Javascript 粘性导航元素-隐藏然后显示

Javascript 粘性导航元素-隐藏然后显示,javascript,jquery,Javascript,Jquery,我有一个粘性导航我正在工作,我能够收集一些代码从一些其他职位,但我遇到了一个问题,导航区域我隐藏后,滚动到页面顶部时不会显示回来。我试图写一个else-if语句,但是运气不好,谢谢 $(window).scroll(function(){ if($("#navheader").offset().top <= $(window).scrollTop) $("#navheader").css({"display":"block","top":"0px", "left":"0

我有一个粘性导航我正在工作,我能够收集一些代码从一些其他职位,但我遇到了一个问题,导航区域我隐藏后,滚动到页面顶部时不会显示回来。我试图写一个else-if语句,但是运气不好,谢谢

  $(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的每一个匹配项上停止激发。这样,它每一个方向激发一次