既然你問了,包括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>
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;}
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
}
如果你要真正做到這一點,你應該使用像jQuery或YUI這樣的類庫,可以使動畫變得更加簡單,並且可以在所有瀏覽器中使用,而不僅僅是支持CSS3的瀏覽器。
我試過你的替代Javascript,但它沒有爲我工作(圖像沒有切換)。就像我說的,我是Javascript新手,所以我不會感到驚訝,這是我的錯。我目前沒有任何CSS,因爲我不知道如何整合它。 – Christopher
因爲它聽起來像你要求一個包括CSS的整個工作示例,所以我改變了我的答案。 – jfriend00