我搜索过高低,似乎无法找到答案。我是一个jquery新手,我让所有动画在ScrollTop上正常工作但是当我滚动回到页面顶部时,我希望带有文本的一个条带回到原来的位置。我已经到了闪烁,所以我认为我在正确的轨道上。请帮忙。
以下是网站:www.artdesignstudios.com/prestige /
这是我正在使用的脚本:
<script>
$(window).scroll(function(){
if ($(window).scrollTop() >= 100){
$('#stripe1').animate({'width': 0},1000);
$('#cta1').animate({'left': -100},1000)
}
else if ($(window).scrollTop() < 400) {
$("#stripe1").css({'width':'100%'},800);
$("#cta1").css('opacity','1');
}
});
</script>
答案 0 :(得分:1)
基本上闪烁的主要问题是,如果两者都覆盖相同的范围,则条件不够,这就是我在评论中提到的情况。
N < 400 can also be >= 100 and after 400 everything is >= than 100
对于这个问题,我们需要对它们进行调整以涵盖scroll
的不同范围,或者使用boolean var
来确保动画将根据预期运行。
一个选项是应用这些更改,尊重我们可以使用150 scroll height
测试的不同范围:
var animated = false; //added variable to control if stripe was animated
$(window).scroll(function () {
if (!animated && $(window).scrollTop() >= 150) { //changed
$('#stripe1').animate({'width': 0}, 1000);
$('#cta1').animate({'left': -100}, 1000);
animated = true; //it was animated
} else if (animated && $(window).scrollTop() < 150) { //changed
$("#stripe1").css({'width': '100%'}, 800);
$("#cta1").css('opacity', '1');
animated = false; //animation ended
}
});
选中此FIDDLE以查看其实际效果