【发布时间】:2016-07-03 18:26:42
【问题描述】:
我想在这个页面上实现一个像左侧导航一样的粘性菜单:http://getbootstrap.com/2.3.2/scaffolding.html。
我的菜单是一个nav 元素,带有position:relative(我也试过static),当它到达视口顶部时,它会变为fixed。
这是我的功能:
$(document).ready(function() {
function stickyNav() {
var elementPosition = $('nav').offset();
console.log(elementPosition);
$(window).scroll(function(){
if($(window).scrollTop() > elementPosition.top){
$('nav').addClass("sticky");
} else {
$('nav').removeClass("sticky");
}
});
}
stickyNav();
}); //document ready
console.log(elementPosition); 在页面加载时返回大约 1200 像素的偏移顶部,这是错误的。但是,如果我调整页面大小,该值会更改为 650px 左右,这是正确的顶部偏移量,并且该函数会执行它应该做的事情。
我环顾四周,发现 offsetp top 在隐藏元素上可能是错误的,或者它有边距问题,但我实际上没有任何复杂的结构,只有一个可见的 nav 元素。
任何有关解决此问题的帮助将不胜感激!谢谢!!
【问题讨论】:
-
您的代码中在哪里调用了stickyNav(),因为我没有看到它的调用?你能分享产生这个问题的 nav 标签的 html 吗?
-
@DennisShtatnov 已更新,谢谢
-
这里是您的代码工作的最小功能示例:jsfiddle.net/b4m3swhp/1。我怀疑这与放置
标签: javascript jquery offset sticky window-resize