我想制作一个简单的效果,当我滚动直到导航显示在顶部时,导航变得固定并因此保持在那里,但当再次滚动到顶部时,导航再次变为非固定。我在某处找到了这个脚本,但是当导航触到屏幕顶部后,它会在固定位置和静态位置之间切换,即if和else语句。 jquery:
$(window).scroll(function() {
var y = $("nav").offset().top;
var scrollY = $(window).scrollTop();
if (scrollY > y) {
var padY = scrollY - y;
$("nav").css({'position': 'fixed', 'top': '0', 'width': '100%'}).stop();
}
else{
$("nav").css({'position': 'static', 'width': '100%'}).stop();
}
});
答案 0 :(得分:0)
(scrollY > y)
将随每个滚动像素而变化,因为您在测量后会改变位置。尝试(scrollY >= y)
或添加未添加fixed
样式的'ghost'元素,并根据该元素做出决定。
例如,基于你的jsfiddle:
添加ghost元素:
<div id="ghost"></div>
<nav>
<div class="wrapper">
<ul> . . .
然后更改测量元素:
$(window).scroll(function() {
var y = $("#ghost").offset().top;
var scrollY = $(window).scrollTop();
. . .
然后它应该完美地运作。