1

嗨,我有一个“返回顶部”按钮,一旦浏览器滚动一定距离,它就会淡入并动画。问题是每次浏览器都会重复 .animate() 一次又一次。任何想法如何在动画发生一次后停止动画?干杯

这是代码:

  $('.up_arrow').hide();

  // fade in up arrow 
  $(function () {
  $(window).scroll(function () {
    if ($(this).scrollTop() > 100) {
        $('.up_arrow').fadeIn(2000, 'swing')

        .animate ({
           opacity: 1,
           left: '+=30'
        },
        {
           duration: '2000',
           easing: 'swing',
           queue: false
        }           
        );

        } else {
        $('.up_arrow').fadeOut(2000, 'swing');
        }
});
}); 
4

2 回答 2

2
$(function () {
    var stop = false;
    $(window).scroll(function () {
        if ($(this).scrollTop() > 100 && stop == false) {
            $('.up_arrow').fadeIn(2000, 'swing')
                .animate({
                opacity: 1,
                left: '+=30'
            }, {
                duration: '2000',
                easing: 'swing',
                queue: false
            });
            stop = true;
        } else {
            $('.up_arrow').fadeOut(2000, 'swing');
            stop = false;
        }
    });
});
于 2012-05-13T13:01:09.703 回答
1

我怀疑 stop() 方法应该在这里工作,并且可能是最佳实践。

例如

$('.up_arrow').stop().fadeOut(2000, 'swing');

我只将它与 animate() 一起使用,但它应该可以解决问题。

于 2013-03-21T08:02:49.010 回答