我試圖淡入淡出圖像。我不確定是否事先預先加載圖像更好。相當多發生的事情是,淡入淡出的下一個圖像中褪色前打全白背景,但我希望它消失立刻而不是顯示白色背景 - 如果是有道理的:褪色圖像滑塊
$(document).ready(function() {
var $next,
cycle;
var i = 0;
var imgArr = ['1.jpg', '2.jpg', '3.jpg'];
$activeLi = $("#slideshow li");
$activeLi.html('<img src="images/' + imgArr[i] + '" />');
cycle = setInterval(change_img, 1000);
function change_img(){
clearInterval(cycle);
$activeLi.find('img').fadeOut('slow', function(){
$activeLi.html('<img src="images/' + imgArr[i] + '" />').fadeIn('slow');
});
i = (i == (imgArr.length - 1)) ? 0 : ++i;
cycle = setInterval(change_img, 1000);
}
});
也就是它更好地在褪色他們之前先預先處理我的圖像?
我的解決方案(這是厭倦sinced我開始的問題...)
$(document).ready(function() {
var $next,
cycle;
var i = 0;
var durTimer = 2000;
var imgArr = ['1.jpg', '2.jpg', '3.jpg', '4.jpg'];
$activeLi = $("#slideshow li");
$activeLi.first().html('<img src="images/' + imgArr[0] + '" />');
cycle = setInterval(change_img, durTimer);
function change_img(){
clearInterval(cycle);
var nxtImg = (i == imgArr.length) ? 1 : i;
$activeLi.last().html('<img src="images/' + imgArr[nxtImg] + '" />');
$activeLi.find('img').animate({opacity:0}, {duration: durTimer});
i = (i == (imgArr.length - 1)) ? 0 : ++i;
$activeLi.first().html('<img src="images/' + imgArr[i] + '" />');
cycle = setInterval(change_img, durTimer);
}
});
我很樂意幫忙,你有jsfiddle嗎? – Seano666
它沒有我猜想的圖像,但它的要點在那裏... http://jsfiddle.net/De63Q/ – Derp
預加載(除非你有*微小*圖像)更好,因爲那麼第一個圖像可以在剩餘下載時顯示,並且在使用時,該請求只需要驗證304狀態(未修改),這比下載快得多。它會減緩第一次運行時的淡入淡出/幻燈片播放速度,但可能意味着每張圖片可以節省幾秒鐘。爲了避免空白,你可能希望在他們的部分運行時中重疊'fadeOut()'和'fadeIn()'。 – Trojan