我有一系列图像循环播放幻灯片作为css background
属性。下面的代码也应该通过jQuery的fadeIn
属性淡入淡出,但由于某种原因它不会消失,而只是改变。有任何想法吗?
这是从未解决的评论的后续行动。在这里小提琴:http://jsfiddle.net/5fVZ7/6/
var images=new Array();
images[0]='http://s29.postimg.org/912bsm0mf/dataarancio.jpg';
images[1]='http://s27.postimg.org/y6tl17eb7/velocita.jpg';
var nextimage=0;
doSlideshow();
function doSlideshow(){
if(nextimage>=images.length){nextimage=0;}
$('.bkg')
.css('background-image','url("'+images[nextimage++]+'")')
.fadeIn(500,function(){
setTimeout(doSlideshow,4000);
});
}
答案 0 :(得分:0)
.fadein会更改元素的不透明度,但您正在更改背景图像。动画只能对数值起作用,浏览器无法计算“在”image1和image2之间的背景图像。因此,请尝试将图像叠加为单独的html元素,并使用fadein按顺序控制其可见性。
答案 1 :(得分:0)
答案是将if
语句和css
属性更改包含在fadeOut
函数中,如下所示:
var images=new Array();
images[0]='http://s29.postimg.org/912bsm0mf/dataarancio.jpg';
images[1]='http://s27.postimg.org/y6tl17eb7/velocita.jpg';
var nextimage=0;
doSlideshow();
function doSlideshow(){
$('.bkg').fadeOut(500,function(){
if(nextimage>=images.length){nextimage=0;}
$('.bkg').css('background-image','url("'+images[nextimage++]+'")');
});
$('.bkg').fadeIn(500,function(){
setTimeout(doSlideshow,4000);
});
}
我认为这段代码比我发现做同样事情的其他代码更简单,更有效,包括评论中发布的重复问题的答案。