动画完成后重复?

时间:2014-05-10 09:18:00

标签: jquery animation onload repeat

此动画在页面加载后运行。完成动画后,如何让它一次又一次地重复?谢谢你的帮助!

function cloudRight(){
$(window).on('load', function () {
    $( ".cloudRight" ).animate({
        left: "+=1000px",
    }, 30000, "swing", 
    function() {
        $( ".cloudRight" ).animate({
            left: "-=1000px",
        }, 30000, "linear");
    }); 
  }); 
}

$(document).ready(function(){
    cloudRight();
});

3 个答案:

答案 0 :(得分:3)

您可以使用:

function cloudRight() {
    $(".cloudRight").animate({
        left: "+=1000px",
    }, 30000, "swing",

    function () {
        $(this).animate({
            left: "-=1000px",
        }, 30000, "linear", cloudRight); // call it again on animation complete
    });
}

$(cloudRight); // call on document ready

如果有多个具有类cloudRight的元素,则应使用promise,而不是每次只调用一次:

function cloudRight() {
    $(".cloudRight").animate({
        left: "+=1000px",
    }, 30000, "swing",

    function () {
        $(this).animate({
            left: "-=1000px",
        }, 30000, "linear");
    }).promise().done(cloudRight);
}

--DEMO--

答案 1 :(得分:1)

尝试以下代码

function cloudRight(){

    $( ".cloudRight" ).animate({
        left: "+=1000px",
    }, 30000, "swing", 
    function() {
        $( ".cloudRight" ).animate({
            left: "-=1000px",
        }, 30000, "linear",cloudRight);
    }); 

}

$(document).ready(function(){
    cloudRight();
});

答案 2 :(得分:1)

        function cloudRight(){
            $( ".cloudRight" ).animate({
                left: "+=30px",
            }, 300, "swing", 
            function() {
                $( ".cloudRight" ).animate({
                    left: "-=30px",
                 }, 300, "linear");
                 cloudRight();
            });
        }

        $(document).ready(function(){
            $(window).on('load', function () {
                cloudRight();
            });
        });