背景图像以 jQuery 淡入淡出
Background image fading with jQuery
我有一系列图像作为 css background
属性循环播放幻灯片。下面的代码也应该让它们通过 jQuery 的 fadeIn
属性 淡入和淡出,但由于某种原因它不会淡出,而是简单地改变。有任何想法吗?
这是一条从未解决的评论的跟进。 Fiddle 这里: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);
});
}
.fadein 改变元素的不透明度,但你正在改变背景图像。动画只能作用于数值,浏览器无法计算出 "between" image1 和 image2 的背景图像。因此,尝试将图像叠加为单独的 html 元素并使用淡入淡出来控制它们的可见性。
答案是将 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);
});
}
我认为这段代码比我发现的许多其他做同样事情的代码更简单、更有效,包括对评论中重复问题的回答。
我有一系列图像作为 css background
属性循环播放幻灯片。下面的代码也应该让它们通过 jQuery 的 fadeIn
属性 淡入和淡出,但由于某种原因它不会淡出,而是简单地改变。有任何想法吗?
这是一条从未解决的评论的跟进。 Fiddle 这里: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);
});
}
.fadein 改变元素的不透明度,但你正在改变背景图像。动画只能作用于数值,浏览器无法计算出 "between" image1 和 image2 的背景图像。因此,尝试将图像叠加为单独的 html 元素并使用淡入淡出来控制它们的可见性。
答案是将 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);
});
}
我认为这段代码比我发现的许多其他做同样事情的代码更简单、更有效,包括对评论中重复问题的回答。