jquery动画回滚动向下的原始位置(?)

时间:2014-02-06 19:39:48

标签: jquery dynamic jquery-animate scrolltop

我搜索过高低,似乎无法找到答案。我是一个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>

1 个答案:

答案 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以查看其实际效果