gpt4 book ai didi

jquery - 使用 $(window).scrollTop() 构建动态 jQuery 菜单;

转载 作者:行者123 更新时间:2023-12-01 06:06:33 25 4
gpt4 key购买 nike

我对 jQuery 很陌生,但我正在尝试进行设置,以便当您向下滚动经过页面顶部的全局导航时,会从侧面弹出一个具有相同链接的较小菜单。这是我正在使用的代码:

<script>
$(document).ready(function(){
$(window).scroll(function(){
var a = $(window).scrollTop();
if (a >= 150){
$('#sideNav a:eq(1)').animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(2)').delay(100).animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(3)').delay(200).animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(4)').delay(300).animate({'margin-right': '0', 'opacity': '1'}, 500);
} else if (a < 150){
$('#sideNav a:eq(4)').animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(3)').delay(100).animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(2)').delay(200).animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(1)').delay(300).animate({'margin-right': '150', 'opacity': '0'}, 500);
}
});
});
</script>

第一个 if 语句工作正常并且动画工作正常,但是添加 else if 使其在滚动回顶部时消失似乎会破坏它。动画仍然有效,但直到页面滚动到适当位置几秒钟后才会触发,而且看起来更慢且断断续续。我认为问题是我需要检查菜单处于什么状态,然后停止动画(如果它已经处于该状态),但我不知道如何去做。

最佳答案

正如您在帖子中所说,问题在于您一遍又一遍地对元素进行动画处理。您可以通过添加一个在动画之前检查并在动画之后重置的变量(在 animate() 的回调参数内)来解决此问题:

$(document).ready(function(){
var animating = false;
$(window).scroll(function(){
var a = $(window).scrollTop();
if (a >= 150 && !animating){
animating = true;
$('#sideNav a:eq(1)').animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(2)').delay(100).animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(3)').delay(200).animate({'margin-right': '0', 'opacity': '1'}, 500);
$('#sideNav a:eq(4)').delay(300).animate({'margin-right': '0', 'opacity': '1'}, 500,
/* Called after animation has completed: */
function() { animating = false; });
} else if (a < 150 && !animating){
animating = true;
$('#sideNav a:eq(4)').animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(3)').delay(100).animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(2)').delay(200).animate({'margin-right': '150', 'opacity': '0'}, 500);
$('#sideNav a:eq(1)').delay(300).animate({'margin-right': '150', 'opacity': '0'}, 500,
function() { animating = false; });
}
});
});

关于jquery - 使用 $(window).scrollTop() 构建动态 jQuery 菜单;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com