Javascript 法丹出了点问题
您好,我想淡出图像,然后用新图像进行淡入淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡,但是它显示了,一秒钟后,新的一个可能有两个变化。谁能告诉我怎么了Javascript 法丹出了点问题,javascript,jquery,Javascript,Jquery,您好,我想淡出图像,然后用新图像进行淡入淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡,但是它显示了,一秒钟后,新的一个可能有两个变化。谁能告诉我怎么了 var dimage = $next.children("img").attr("rel"); $(".photo img").fad
var dimage = $next.children("img").attr("rel");
$(".photo img").fadeOut("slow", function () {
$(".photo img").attr("src", dimage);
$(".photo img").fadeIn("slow");
});
这可能是因为图像必须在src更改后加载。
考虑将图像放在标签中,然后设置CSS属性显示:无。这样,图像将在脚本运行前预加载到浏览器中,并在脚本运行时可用。您没有给新图像足够的加载时间
function loadImage (src) {
return $.Deferred(function(def){
var img = new Image();
img.onload = function(){
def.resolve(src);
}
img.src = src;
}).promise();
}
var dimage = $next.children("img").attr("rel");
var imageLoadedDef = loadImage(dimage);
$(".photo img").fadeOut("slow", function () {
def.done(function(src){
$(".photo img").attr("src", src);
$(".photo img").fadeIn("slow");
});
});
突出显示的问题是,调用图像时,图像未准备好显示,因此解决方案是在开始幻灯片放映之前预加载图像,创建一个包含图像数组路径的函数
function preLoad(){
var imgs = {'test1.jpg', 'test2.jpg', 'test3.jpg'};
var img = document.createElement('img');
for(var i = 0; i < imgs.leght; i++){
img.src = imgs[i]; //all images gets preloaded at this stage
}
startSlider(); //here you will do your code
}
函数预加载(){
var imgs={'test1.jpg','test2.jpg','test3.jpg'};
var img=document.createElement('img');
对于(变量i=0;i
您没有给新图像足够的加载时间。因为更改src后,浏览器需要几秒钟才能下载图像。当然,可以淡入淡入或像其他元素一样显示(但也要确保它已预加载!)