【问题标题】:jquery animate but then come back to normaljquery 动画但随后恢复正常
【发布时间】:2012-04-24 23:41:31
【问题描述】:

考虑一个 div“dMyDiv”

我注意到在 jquery 中我可以制作动画,因此:

$( "#dMyDiv").animate({
         backgroundColor: "#aa0000"
  }, 1000 );

为我的 div 带来类似红色的彩色背景。但是有没有办法在说 10 秒后 回到我的 div 的正常白色背景?我看到有一个回调函数,但我不确定是否可以启动动画,并且一旦动画完成返回我的常规背景(动画之前)。我应该这样做吗:

 $( "#dMyDiv").animate({
             backgroundColor: "#aa0000"
          }, 1000, function() {
           $(#dMyDiv").animate({ backgroundColor: "#fff" }, 1000);
          };
);

意思是在红色动画之后,再次动画为白色?

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    你是对的。第三个参数是动画完成后执行的函数。

    $("#dMyDiv").stop().animate({backgroundColor:'#aa0000'},1000,function(){
        $(this).animate({backgroundColor:'#fff'},1000);
    });
    

    【讨论】:

    • 如果你不停止动画,并且在它再次触发的时候正在运行,它会进入一种队列,让它看起来很奇怪。例如,您通过单击按钮触发动画,重复执行 10 次。如果你不停止它会运行很多次直到完成。
    【解决方案2】:

    你可以使用 setTimeout:

    $("#dMyDiv").stop(true, true).animate({
    
        backgroundColor: "#aa0000"
    
    }, 1000, function() {
    
       setTimeout(function() {       
    
           $(#dMyDiv").animate({ 
    
               backgroundColor: "#fff" 
    
           }, 1000);
    
       }, 10 * 1000);
    
    });
    

    【讨论】:

    • 如果你不停止动画,并且在它再次触发的时候正在运行,它会进入一种队列,让它看起来很奇怪。例如,您通过单击按钮触发动画,重复执行 10 次。如果你不停止它会运行很多次直到完成。
    • lu1s 是正确的,您想使用.stop(true, true) 进行更平滑的过渡。查看链接文档了解原因。
    • 感谢 Scott,不知道这些参数。它清除队列。
    【解决方案3】:

    我能够和这些人一起做:

    http://jsfiddle.net/aN7qz/

    代码如下:

    $( "#myDiv").animate({ 
                 backgroundColor: "#aa0000" 
              },
                 1000, 
                 function() { 
                     $("#myDiv").animate({ backgroundColor: "#fff" }, 1000);
                 }
                         );
    

    【讨论】:

    • 我以为你想等待 10 秒然后重新启动?如果是这样,请查看我的答案以了解如何执行此操作。如果没有,并且您想在第一个动画之后立即调用它,那么您就知道了!
    • @Scott - 好吧,我真的只是想从一个动画转到另一个动画,如果你考虑一下,我可以设置动画的秒数,所以应该这样做。我仍然会为你的辛勤工作+1 :)。
    • oJM86o:我的回答是正确的,并且在一段时间内仍然被接受。现在您已经用较少的功能回复自己,并删除了接受的答案,将您自己的答案作为接受的答案。结果,我的声望降了15分。 ¬¬
    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多