【问题标题】:loop of a 100 animations with specific delay具有特定延迟的 100 个动画的循环
【发布时间】:2013-06-27 18:51:29
【问题描述】:

我正在尝试制作 100 个动画,每个动画都有不同的延迟。 出了点问题,因为每个人都没有收到他特定的动画。 代码如下:

var text = $("#cont").text();
var count = 1;
var before = 0;
var after = 0;
var counter = "";
for (var i = 1; i <= 20; i++) {
    for (var j = 1; j <= 5; j++) {
        counter = before + "." + after;
        after += 2;
        text += "<div class='ball' id='ball" + count + "'></div><br />";
        $("#ball" + count).css({
            "-webkit-animation": "ball 3.5s linear" + counter + "s infinite normal",
            "-moz-animation": "ball 3.5s linear" + counter + "s infinite normal",
            "-ms-animation": "ball 3.5s linear" + counter + "s infinite normal",
            "-o-animation": "ball 3.5s linear" + counter + "s infinite normal",
            "animation": "ball 3.5s linear" + counter + "s infinite normal",
        });
        count++;
    }
    after = 0;
    before++;
}
i--;
$("#cont").html(text);

【问题讨论】:

标签: javascript css for-loop


【解决方案1】:

您正在尝试将.css() 应用于text 的字符串,这是您的问题区域,因为css() 仅适用于DOM 对象。另一件事是您在您之后将text 放入DOM 中循环已完成,因此您的任何 css 都已在循环中完成。我对其进行了更改,因此您将 html 附加到循环中的 $('#cont') 对象,以便可以对其进行操作。

你可以在这里看到小提琴:http://jsfiddle.net/FMBNc/3/

还创建了一个替代方案,您只应用动画延迟并在 CSS 文档中声明动画的其余部分:http://jsfiddle.net/FMBNc/4/

var text = $("#cont"); //changed to just the object
var count = 1;
var before = 0;
var after = 0;
var counter = "";
for (var i = 1; i <= 20; i++) {
    for (var j = 1; j <= 5; j++) {
        counter = before + "." + after;
        after += 2;
        //putting the html object in the DOM so it can be manipulated by .css()
        text.append("<div class='ball' id='ball" + count + "'></div>");
        $("#ball" + count).css({
            "-webkit-animation": "ball 3.5s linear " + counter + "s infinite",
            "-moz-animation": "ball 3.5s linear " + counter + "s infinite",
            "-ms-animation": "ball 3.5s linear " + counter + "s infinite",
            "-o-animation": "ball 3.5s linear " + counter + "s infinite",
            "animation": "ball 3.5s linear " + counter + "s infinite"
        });
        count++;
    }
    after = 0;
    before++;
}

此外,您的 CSS 声明中不需要 normal,因为它是默认设置。

【讨论】:

  • 谢谢!顺便说一句,我喜欢你的翻拍(第二个链接)。
猜你喜欢
  • 2018-10-31
  • 2015-05-20
  • 2022-11-21
  • 2023-04-07
  • 1970-01-01
  • 2016-07-05
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多