粘性导航元素 - 隐藏然后显示
Sticky Nav element - hide then show
我有一个我正在处理的粘性导航,我能够从其他一些帖子中收集一些代码,但是我遇到了一个问题,滚动后我隐藏的导航区域在滚动到页面顶部时不会显示回来。我试图写一个 else if 语句,但没有运气,谢谢。
$(window).scroll(function(){
if($("#navheader").offset().top <= $(window).scrollTop)
$("#navheader").css({"display":"block","top":"0px", "left":"0px"});
else
$("#navheader").css({"display":"none"});
});
这可能更容易
看起来问题是您需要在window
scrollTop
后()
.
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;
}
});
做了一个小提琴:http://jsfiddle.net/filever10/cxJ6a/
编辑:添加了一个go
切换开关,以在 if/then 的每场比赛中停止射击。 这样它每个方向发射一次。
如果您控制台.log:
console.log($("#navheader").offset().top)
在滚动事件中,您将看到一旦 IF 语句变为 true,它将始终返回 0。由于元素是固定的并且它有 top: 0,它将始终具有 0。
你问的解决方案是什么?
创建最关闭的全局变量并检查它。
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"});
});
但是由于您的 $("#navheader") 可能设置为显示:none ,即使这样它也可能会返回 0...
所以你有几个选择。
- 制作一些导航支架并瞄准它。
- 对值进行硬编码。
- 使其可见:隐藏; 而不是显示:无;(这样你就可以瞄准最讨厌的人)
相关文章:
- JQuery 测试元素是可见的还是隐藏的,然后添加删除类
- jQuery检查URL,然后显示和隐藏元素
- HTMLJavascript-如何向输入语句添加函数并隐藏输入语句,除非选中“是”,然后取消隐藏
- 将twitter引导程序popover设置为在某个事件之后隐藏,然后在另一个事件之后显示
- JavaScript 更改隐藏值,然后提交表单
- 响应式导航在页面加载时打开,然后隐藏.应该在页面加载时隐藏
- ng-hide 元素出现一段时间,然后隐藏
- 通过脚本在中隐藏元素,然后使用函数显示
- 粘性导航元素 - 隐藏然后显示
- 隐藏系列,然后刷新图表扩展
- Javascript计算脚本,用于计算表单输入值,然后另存为page2.php的隐藏输入
- 使用图像滚动达到页面中的最大内容,然后应该使用窗口百分比隐藏图像
- 在提交之前将一堆复选框输入附加到表单,然后隐藏它们
- 如何隐藏然后恢复到初始状态(=不总是"块")
- 如何添加组件“隐藏”然后把它滑进去
- 当ui日历首先隐藏然后显示时发生
- 如何";动画"/在java脚本中隐藏然后取消隐藏字符串
- 隐藏然后通过jquery显示一些东西
- 隐藏然后在 jquery 中显示来自选择元素的下拉箭头
- 当使用JQuery选中复选框时,我如何隐藏然后显示多个Div