javascript - 使用 jQuery 添加无限循环功能并重置一系列动画

标签 javascript jquery

function ani() {
  if(!$(':animated').length) {

    $('#img1, #img2, #img3').css({
      width: '50px',
      left: '112px',
      top: '212px',
      display: 'none',
      position: 'absolute'
    });      
    $('#img4, #img5, #img6').css({
      width: '50px',
      left: '112px',
      top: '212px',
      display: 'none',
      position: 'absolute'
    });  
    $('#img7, #img8, #img9, #img10').css({
      left: '358px';
      top: '212px',
      display: 'none',
      position: 'absolute'
    });  

    $("#img1").delay(100).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 
    $("#img2").delay(500).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 
    $("#img3").delay(1000).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 

    $("#img4").delay(200).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);
    $("#img5").delay(700).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);
    $("#img6").delay(1100).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);

    $("#img7").delay(100).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img8").delay(500).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img9").delay(1000).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img10").delay(1100).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani); 
  }
};

ani();

想知道如何在 jQuery 中将动画循环无限次或定义的次数。目前上面的内容只执行一次。

它必须是相同的原始动画,而不是在屏幕下方大量进行。所以重置然后重播;用户将看到与第一次查看时一样的效果。

最佳答案

您可以使用该函数作为所有动画的回调,并始终检查 $(':animated').length。这将确保它在最后一个动画完成后运行。

您还可以在每次函数运行时重置 css:

function ani() {
  if(!$(':animated').length) {
    $('img').css({
      left: 0,
      top: 0,
      display: 'none'
    });      
    $("#img1").delay(100).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 
    $("#img2").delay(500).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 
    $("#img3").delay(1000).fadeIn().animate({left: '+=100', top: '+=200'}, 200, ani); 

    $("#img4").delay(200).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);
    $("#img5").delay(700).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);
    $("#img6").delay(1100).fadeIn().animate({opacity: .9, top:"400px"},'fast', ani);

    $("#img7").delay(100).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img8").delay(500).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img9").delay(1000).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani);
    $("#img10").delay(1100).fadeIn().animate({left: '+=-100', top: '+=200'}, 200, ani); 
  }
};

ani();

Fiddle

关于javascript - 使用 jQuery 添加无限循环功能并重置一系列动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584064/

相关文章:

javascript - 覆盖正文区域的垂直侧边菜单

javascript - 搜索 javascript 字符串并获取单词索引而不是字符

javascript - 下拉菜单无法选择并打开 div...我做错了什么?

javascript - Google 脚本应用程序-变量内的变量错误

javascript - 如何从 JS 中的字符串中去除坏字符?

jquery - jQuery.load() 中的参数未传递给 Controller ​​操作方法

JavaScript 到 jQuery 语法构建自定义 CSS 水平菜单

javascript - Google Apps 脚本、UrlFetchApp 和 JQuery

javascript - 如何为 highchart 上的 tickPosition 提供填充?

javascript - 输入为空时如何隐藏所有名称?