分离和附加后动画对象不继续动画

Posted

技术标签:

【中文标题】分离和附加后动画对象不继续动画【英文标题】:Animated objects not continuing to animate after detaching and appending 【发布时间】:2013-11-17 01:36:19 【问题描述】:

我有几张正在动画(淡出和淡入)的图像,我想隐藏和显示它们。使用hide()show() 不起作用,因为它们只是淡入淡出。我想我可以detach() 他们然后appendTo() 他们,这有效,但动画在重新连接后不会继续.部分代码如下:

动画

function loading() 
    $('#load0').delay(300).fadeIn(200);
    $('#load1').delay(500).fadeIn(200);
    $('#load2').delay(700).fadeIn(200);
    $('#load0').delay(500).fadeOut(75);
    $('#load1').delay(700).fadeOut(75);
    $('#load2').delay(900).fadeOut(75, loading);

loading();

分离和附加

var load;
$('#slideshow').on('cycle-before', function() 
    load = $('.load').detach();
);
$('#slideshow').on('cycle-after', function() 
    load.appendTo("#main");
);

如何隐藏和重新显示这些元素?

【问题讨论】:

你想一次显示一张图片吗? 不...它们依次淡入,然后依次淡出。 喜欢jsfiddle.net/arunpjohny/Sqe2s/1 ? 不,所有三个彼此相邻淡入,然后所有三个淡出。你可以在这里(简要地)看到它:element17.com. 【参考方案1】:

我相信您的第一个问题是最后一行“$('#load2').delay(900).fadeOut(75, loading);”如果 DOM 中不存在“load2”(因为您已将其分离),则无法再次调用加载方法。您必须在 appendTo 时再次调用 loading() ,或者您可以检查项目是否在 DOM 中,如果不在,则可以调用 loading() 函数。您也可能在某些浏览器中遇到问题,递归从其内部一次又一次地调用该函数。每个浏览器处理调用次数的方式不同,有些浏览器只使用执行时间而不是递归级别。

function loading() 
  $('#load0').delay(300).fadeIn(200);
  $('#load1').delay(500).fadeIn(200);
  $('#load2').delay(700).fadeIn(200);
  $('#load0').delay(500).fadeOut(75);
  $('#load1').delay(700).fadeOut(75);
  $('#load2').delay(900).fadeOut(75, loading);

【讨论】:

以上是关于分离和附加后动画对象不继续动画的主要内容,如果未能解决你的问题,请参考以下文章

WPF XAML Trigger中使用动画后 动画对象冻结的处理办法

NodeJS 和 Electron - 后端的请求承诺冻结前端的 CSS 动画

如何直接在 chrome 检查器中创建和附加 CSS3 动画?

片段事务分离和附加后ListView不工作?

笔画动画,如何为出现的笔画附加另一条路径?

将 JQuery 动画附加到方法/设置器而不是 CSS 属性?