Jquery 带有延迟的排队动画序列;需要重复

标签 jquery loops jquery-animate queue repeat

我需要下面的代码,它可以对一系列图像进行动画处理,运行然后无限重复。目前它正在页面加载,然后刚刚完成。观看动画的网址是:http://marisspillanewines.com/dev/

谢谢!莫娜

$(document).ready(function (){
  $("#cork_CU").animate({left: '-20px',top:'-20px'}, { duration: 600, queue: true, ease:true });
  $("#fisherman_CU").delay(4800).animate({left: '-20px',top:'-20px'}, { duration: 600, queue: true, ease:true });
  $("#maris_CU").delay(8800).animate({left: '-20px',top:'-20px'}, { duration: 600, queue: true, ease:true });
  $("#capsule_CU").delay(12800).animate({left: '-20px',top:'-20px'}, { duration: 600, queue: true, ease:true });
  $("#numbers_CU").delay(16800).animate({left: '-20px',top:'-20px'}, { duration: 600, queue: true, ease:true });
  $("#fisherman_CU").delay(4800).animate({left: '-700px',top:'600px'}, { duration: 0, queue: true, ease:true });
  $("#maris_CU").delay(4800).animate({left: '-700px',top:'-600px'}, { duration: 0, queue: true, ease:true });
  $("#cork_CU").delay(4800).animate({left: '700px',top:'600px'}, { duration: 0, queue: true, ease:true });
  $("#capsule_CU").delay(4800).animate({left: '700px',top:'-600px'}, { duration: 0, queue: true, ease:true });
  $("#numbers_CU").delay(4800).animate({left: '700px',top:'-600px'}, { duration: 0, queue: true, ease:true });
});

最佳答案

对于 jQuery 中的此类计时问题,有一个 plugin jQuery-timing 。它将您的代码缩短为以下内容。我建议为图像提供一个通用的 CSS 类,例如“图片”:

var startLeft = $('.pic').each().css('left'),
    startTop = $('.pic').each().css('top'),
    targetPos = {left:-20,top:-20};

var $frame = $('.pic').parent();

function setBack(index) {
    this.css({left:startLeft[index], top:startTop[index]}).appendTo($frame);
}

$(".pic").repeat().each($).then(setBack).animate(targetPos,600).wait(4000);

此解决方案非常通用,因为它不依赖于帧中图像的实际数量。

通过使用 .appendTo($frame) 我们确保动画图像始终位于最上面。

.repeat()是来自该扩展的计时方法,以及通过 .each($) 的顺序循环,以及延迟函数 .wait(timeout) .

为了收集起始位置,我使用了带有并行 .each() 的短语法。 .

关于Jquery 带有延迟的排队动画序列;需要重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718366/

相关文章:

java - 如何从解析中提取对象并将其显示在列表中,而无需在 android 中使用它们的 ID?

javascript - 如何使用 jquery 规范化非 jquery 事件

java - 检查无限调用/递归调用算法

jquery - 显示/隐藏带有淡入淡出的剪辑效果

javascript - 在未知关键帧上平滑地停止 CSS 旋转动画

jquery-ui - jquery datepicker 动画选项不起作用

javascript - 带有动态 div 的 JQuery 对话框

javascript - HTML5 视频/音频播放器使用 AngularJS 控制播放和暂停

javascript - while 循环必须是无限的才会崩溃吗?

c - 如何修复 C 中的致命运行时错误?