jQuery 暂停/恢复动画

Posted

技术标签:

【中文标题】jQuery 暂停/恢复动画【英文标题】:jQuery Pause / Resume animate 【发布时间】:2011-07-31 23:02:35 【问题描述】:

这对我不起作用...

$(document).ready(function()
    $('#h .a').animate(
        top:'-=80px'
    ,90,'linear');

    $('#h .au,#h .di').animate(
        left:'-=80px'
    ,50000000,'linear');

    $('#h .r').animate(
        left:'-=80px'
    ,250,'linear');

    $("#h").animate('pause'); //pausing it at the start
    //resume pause switch
    $("#h").mouseover(function()
      $(this).animate('resume');
    ).mouseout(function()
      $(this).animate('pause');
    );

);

【问题讨论】:

Jquery animate 没有暂停/恢复功能,您可以使用插件或自己编写。 【参考方案1】:

试试这个暂停和恢复:jQuery Pause / Resume animation plugin

我们$(this).stop() 也可以暂停动画但没有机会继续!

另一个错误是这个:top:'-=80px'

首先尝试像这样获取当前位置,然后向其添加位置:

_top = $(this).offset().top;

$('#h .a').animate(
    top:_top-80
,90,'linear')

【讨论】:

【参考方案2】:

在此处查看演示:http://api.jquery.com/clearQueue/

看起来正是你想要做的那种事情。

【讨论】:

【参考方案3】:

检查插件:Fxqueues

https://github.com/lucianopanaro/jQuery-FxQueues

它同时支持暂停和恢复(不清除队列),并添加了 Scopes 的思想。范围非常适合在多个对象之间链接动画。

我还没有找到适用于当前 Jquery 版本的 Fxqueus 版本,但已成功将其与旧 Jquery 版本一起使用。

【讨论】:

【参考方案4】:

您需要考虑为此使用.stop() 函数,因为它会停止 jQuery 元素上的任何动画。

http://api.jquery.com/stop/

【讨论】:

【参考方案5】:

使用queue() 和dequeue() 函数。这是一个直接取自 jQuery 文档的示例。

在http://jsfiddle.net/j4SNS/查看工作示例

【讨论】:

如果在正方形从右向左移动时单击停止/开始,它将移动起点:)【参考方案6】:
<style type="text/css">
.scroll 
width:100%;
overflow:hidden;
position:relative;

 
.scrollingtext 
white-space:nowrap;
position:absolute;

</style>

<script type="text/javascript">
    $(document).ready(function () 
        $('.scrollingtext').bind('marquee', function () 
            marqueeFunction($(this), 'START');
        ).trigger('marquee');

        $('.scrollingtext').mouseover(function () 
            $(this).stop();
        );
        $('.scrollingtext').mouseout(function () 
            marqueeFunction($(this), 'RESUME');
        );
    );

    function marqueeFunction(ob, type) 
        // ========== HOROZONTAL ==========
        //                var tw = ob.width();
        //                var ww = ob.parent().width();
        //                if (type == 'START')
        //                    ob.css( right: -tw );
        //                ob.animate( right: ww , 20000, 'linear', function () 
        //                    ob.trigger('marqueeX');
        //                );
        // ========== VERTICAL ==========
        var th = ob.height();
        var hh = ob.parent().height();

        if (type == 'START')
            ob.css( bottom: -th );
        ob.animate( bottom: hh , 20000, 'linear', function () 
            ob.trigger('marquee');
        );
    
</script>

<div class="scroll">
    <div class="scrollingtext">Some html to scroll as a marquee</div>
</div>

【讨论】:

以上是关于jQuery 暂停/恢复动画的主要内容,如果未能解决你的问题,请参考以下文章

如何暂停和恢复 UIView 动画(没有块动画)?

暂停动画旋转,设置角度值,然后稍后恢复?

暂停和恢复 AnimateWithDuration 动画 ios

摇摆动画暂停和恢复

无论我是在主时间轴动画还是子/孙 MC 动画上暂停,如何从最后一个位置恢复动画?

在android webview上暂停/恢复svg动画