シンプルなHTMLスライドショーのためのシンプルなJavaScriptコードを書きました。イメージは配列内にあり、5秒ごとに変化します。HTML CSSのスライドショーの切り替え
0 opacity
を超えてに遷移する現在の画像の4番目の時刻を望んでいます。これは、画像が遷移して表示されなくなったら、次の画像が読み込まれてから、すべての画像。
私のコードは以下の通りです。
CSS
#slider {
opacity: 1;
transition: opacity 1s;
border-radius: 10px;
box-shadow: -5px 7px 5px #888888;
width: 99vw;
height: 470px;
align: middle;
}
#slider.fadeOut {
opacity: 0;
}
HTML
<img id="slider" src="Images/image1">
はJavaScript
var imgArray = [
'Images/image1.jpg',
'Images/image2.jpg',
'Images/image3.jpg',
'Images/image4.jpg',
'Images/image5.jpg',
'Images/image6.jpg',
'Images/image7.jpg',
'Images/image8.jpg'
],
curIndex = 0;
imgDuration = 5000;
function slideShow() {
document.getElementById('slider').className += "fadeOut";
setTimeout(function() {
document.getElementById('slider').src = imgArray[curIndex];
document.getElementById('slider').className = "";
},1000);
curIndex++;
if (curIndex == imgArray.length) {
curIndex = 0;
}
setTimeout(slideShow, imgDuration);
}
slideShow();
問題は、画像を1秒とし、同じ画像の上にフェードアウトしますので、遷移はビクビクしているありますまだ表示されている場合、次の画像は遷移なしでロードされます。
これは私が見落としている簡単な修正だと確信しています。
彼らはしかし、アレイに追加されたときにイメージがロードされていない、私は感謝し、彼らは物理的ページへのロードされていないが、彼らはまだ存在していますか? –
いいえ、そうではありません。実際にはイメージコンテンツをロードする必要があります。あなたがあなたの配列に持っているものは、単に文字列です。 –
決して実際にコールバックをしていないのは、素早く読み込みができ、画像をフェードインする機能と、それをスライドさせて両方でsetTimeoutメソッドを使用する別の機能を使用する方が簡単だろうと思ったのですか? –