如何将平滑过渡添加到一个非常简单的JavaScript幻灯片中

时间:2013-08-14 18:56:24

标签: javascript jquery slideshow opacity

我有以下JavaScript来制作幻灯片:

window.addEventListener('load', main, false);

var number = 1;
var interval;

function main() {
    interval = setInterval(changeDia, 3000);
}

function changeDia() {
    var img = document.getElementById("dia");
    var currentDia = img.getAttribute("src");

    if(currentDia == "style/slideshow/6.jpg") {
        number = 1;
    } else {
        number = number + 1;
    }
    img.setAttribute("src", "style/slideshow/" + number + ".jpg");
}

此代码工作正常,但转换非常粗鲁。我希望当前的图像淡出,下一个图像淡入,以便顺利过渡。什么是最简单的方法? Javascript和jQuery对我都有好处。

提前致谢,

塞德里克

1 个答案:

答案 0 :(得分:1)

你可以在没有插件的情况下使用jQuery轻松完成:

var i = 0,               //initial index
    duration = 1000,     //animation duration
    interval = 3000;     //interval

function switchImg() {
    $("<img>")                                               //create new <img>
        .attr("src", "style/slideshow/" + (i<6?++i:(i=1,i)) + ".jpg") //set attr.
        .css("opacity", 0)                                   //hide it
        .prependTo("#wrap")                                  //add it to DOM
        .animate({                                           //fade in
            opacity: 1
        }, {
            duration: duration
        })
        .next()                                              //select current img
        .animate({                                           //fade out
            opacity: 0
        }, {
            duration: duration
        })
        .promise()
        .done(function () {                                  //remove old img
            $(this).remove();                                // when done
            setTimeout(switchImg, interval);                 //repeat
        });
}
switchImg();                                                 //start up

http://jsfiddle.net/DerekL/vzhHZ/

不要忘记将图片的position属性设置为absolute,否则无效。