使用Javascript和CSS3过渡的图像交叉淡入淡出

Chr*_*her 2 javascript css css3

我试图通过使用CSS3过渡使幻灯片中的图像交叉淡入淡出.我有幻灯片工作,我知道如何使用转换,但我不知道如何让CSS和Javascript一起工作来实现这一目标.我对Javascript相对较新,所以简单的答案非常感谢.

使用Javascript:

var images = new Array()
images[0] = "img/1.jpg";
images[1] = "img/2.jpg";
images[2] = "img/3.jpg";
images[3] = "img/4.jpg";
images[4] = "img/5.jpg";
var timer = setInterval(checkImage, 3000);
var x=0;

function checkImage()
{
    if (x>4)
    {
        x=0;
        changeImage();
    }
    else
    {
        changeImage();
    }
}

function changeImage()
{
document.getElementById("slideimg").src=images[x]
x++;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<img src="img/5.JPG" width="400" height="300" id="slideimg">
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 6

既然你要求包括CSS在内的所有东西,这里有一个工作演示(需要支持CSS3过渡功能的浏览器,如Chrome,Safari或Firefox 4+):http://jsfiddle.net/jfriend00/cwP5Q/.

HTML:

<div id="container">
<img id="slideimg0" class="slide showMe" src="http://photos.smugmug.com/photos/344287800_YL8Ha-S.jpg">
<img id="slideimg1" class="slide" src="http://photos.smugmug.com/photos/344287888_q22cB-S.jpg">
<img id="slideimg2" class="slide" src="http://photos.smugmug.com/photos/344284440_68L2K-S.jpg">
<img id="slideimg3" class="slide" src="http://photos.smugmug.com/photos/344286315_oyxRy-S.jpg">
<img id="slideimg4" class="slide" src="http://photos.smugmug.com/photos/344285236_hjizX-S.jpg">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

#container {position: relative; font-size: 0;}
.slide {
    border: none; 
    opacity: 0; 
    position: absolute; 
    top: 0; 
    left: 0;
    -webkit-transition: opacity 2s linear;
    -moz-transition: opacity 2s linear;
    -o-transition: opacity 2s linear;
    transition: opacity 2s linear;
}
.showMe {opacity: 1;}
Run Code Online (Sandbox Code Playgroud)

JS(页面准备就绪时运行):

var timer = setInterval(nextImage, 4000);
var curImage = 0;
var numImages = 5;

function nextImage() {
    var e;
    // remove showMe class from current image
    e = document.getElementById("slideimg" + curImage);
    removeClass(e, "showMe");

    // compute next image
    curImage++;
    if (curImage > numImages - 1) {
        curImage = 0;
    }

    // add showMe class to next image
    e = document.getElementById("slideimg" + curImage);
    addClass(e, "showMe");
}

function addClass(elem, name) {
    var c = elem.className;
    if (c) c += " ";  // if not blank, add a space separator
    c += name;
    elem.className = c;
}

function removeClass(elem, name) {
    var c = elem.className;
    elem.className = c.replace(name, "").replace(/   /g, " ").replace(/^ | $/g, "");  // remove name and extra blanks
}
Run Code Online (Sandbox Code Playgroud)

如果你要真正做到这一点,你应该使用像jQuery或YUI这样的类库,这将使动画更容易,并且适用于所有浏览器,而不仅仅是支持CSS3的浏览器.