我试图淡入淡出图像。我不确定是否事先预先加载图像更好。相当多发生的事情是,淡入淡出的下一个图像中褪色前打全白背景,但我希望它消失立刻而不是显示白色背景 - 如果是有道理的:褪色图像滑块
$(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