4

这是我的例子:http: //jsfiddle.net/UuD8s/5/

$("#transition")
    .delay(5000)
    .animate({ width: "400px" }, { duration: 1000, queue: true });

$("#transition")
    .delay(2000)
    .animate({ left: "100px" }, { duration: 1000, queue: true });​

我想在页面启动后延迟我的第二个动画开始,延迟 2 秒。问题是它在第一个动画之后开始。如果queue设置为false根本没有延迟。

如何在页面启动后将动画延迟 2 秒?

4

3 回答 3

7

为了在页面启动后延迟动画设置queue为 false 并使用setTimeout两秒:

$("#transition")
    .delay(5000)
    .animate({width: "400px"}, {duration: 1000, queue: true});

setTimeout(function() {

    $("#transition").delay(2000).animate({ left: "100px" }, {
        duration: 1000,
        queue: false
    });

}, 2000);​

这是一个现场演示

于 2012-05-17T12:30:27.233 回答
1

您可以使用setTimeout()方法来延迟 javascript 函数。

$("#transition").delay(5000).animate({width: "400px"}, {duration: 1000, queue: true});
setTimeout(function() { 
    $("#transition").delay(2000).animate({left: "100px"}, {duration: 1000, queue: false});  
}, 2000);
于 2012-05-17T12:30:56.177 回答
0

据我了解,您希望第二个动画(左侧)在启动后 2 秒开始。这将需要 1 秒钟。您希望第一个在启动后 5 秒启动。

所以你可以做的是将它们排队,以便在左边的一个完成宽度后两秒钟,一个踢进来......

$("#transition").delay(2000).animate({left: "100px"}, {duration: 1000});
$("#transition").delay(2000).animate({width: "400px"}, {duration: 1000});

http://jsfiddle.net/UuD8s/7/

这确实解决了您在上述情况下它们没有同时运行的情况,但如果您确实希望它们同时运行(例如,宽度应该在运动的中途开始缩小),那么这将不起作用。

于 2012-05-17T12:38:47.630 回答