在Jquery中动画后更改Image Src

时间:2014-09-28 03:50:36

标签: javascript jquery html animation

所以我正在制作宝丽来幻灯片效果,我想在Jquery中更改动画后的图像。我尝试添加延迟,但也许我做得不对?

这是我的代码,也许您可​​以帮助找到添加过渡图像的方法

Jquery的    

$(function () { // DOCUMENT ready shorthand
    function polariodSlideshow() {
        $("#polaroid").animate({ opacity: 1, top: 80 }, 1500);
        $("#polaroid").animate({ opacity: 0, top: 250 }, 1800);
        $("#polaroid").animate({ opacity: 0, top: 0 }, 1900, polariodSlideshow);
    }
    polariodSlideshow();
});

HTML

<div id="polaroid" style="position:absolute ;width: 100%; height: -3000px; margin-top: 35px; opacity:0.0"> 
&nbsp;&nbsp;&nbsp; <br /> <br />
<div  style="background-color: #EEEEEE; height:145%; width:40%; box-shadow: 0px 10px 5px #888888; display:inline-block; margin-left: 15%;">

<div id="slideshow">
<img id="centerIMG" src="images/cityscape.jpg"  style=" margin-top:15px; width: 94%; margin-left:3%;" />

</div>

<div style=""> <br /> <br /> </div>
</div>
</div>

我想在第三个动画之后添加开关,因此在动画完成后更改图像后会发生回调函数。

1 个答案:

答案 0 :(得分:1)

您只需使用第三个动画中的完成处理程序:

$(function () { // DOCUMENT ready shorthand
    var imgs = ["src1.jpg", "src2.jpg", "src3.jpg", "src4.jpg"];
    var cntr = 0;
    function polariodSlideshow() {
        $("#polaroid").animate({ opacity: 1, top: 80 }, 1500);
        $("#polaroid").animate({ opacity: 0, top: 250 }, 1800);
        $("#polaroid").animate({ opacity: 0, top: 0 }, 1900, function() {
            // change the image here
            var newImg = imgs[cntr % imgs.length];
            ++cntr;
            // use newImg here

            // then kick off the next iteration
            polariodSlideshow();
        });
    }
    polariodSlideshow();
});

如果新图像.src尚未缓存,那么您可能还需要添加等待加载或更好的代码,确保它已经过预处理,这不是一个问题。