繁体   English   中英

滚动Java动画

[英]Javascript animation on scroll

我试图在页面上的元素上做简单的动画

$(window).on('scroll',function () {
    if($(window).scrollTop() > 500){
        $('#top-page').animate({ right: '50px' }, "slow");
    }else{
         $('#top-page').animate({ right: '-50px' }, "slow");
          }

});

问题在于它永远不会进入其他条件。

scroll过程中, scroll事件会触发多次,因此每次触发时都会向动画队列中添加新的动画。 队列增长到了巨大的规模,您迫不及待地想播放“正确的”动画。

为避免这种情况,可以使用.stop()方法刷新队列:

 $(window).on('scroll', function() { var sign = $(window).scrollTop() > 50 ? '' : '-'; $('#top-page').stop().animate({right: sign + '50px'}, "slow"); }); 
 body { height: 300vh } #top-page { position: fixed; top: 0; right: -50px; background: red } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="top-page">TOP PAGE</div> 

$(window).on('scroll',function () {
    //var body = document.body; // For Safari
    var html = document.documentElement; // Chrome, Firefox, IE and Opera

    if(html.scrollTop > 500){
        $('#top-page').animate({ right: '50px' }, "slow");
    }else{
         $('#top-page').animate({ right: '-50px' }, "slow");
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM