当改变背景图像时,平滑褪色



这是我的代码,看看它的作用,看看这个提琴

<div id="header">
.
.
.
</div>
CSS

#header {
background: url(images/img8681.jpg);
background-size: cover;
border-bottom: 8px solid #333333;
height: 620px;
}

Javasript (jQuery)

var imgs = new Array("images/img8681.jpg","","","","");
function changeBg() {
    var imgUrl = imgs[Math.floor(Math.random()*imgs.length)];
    $('#header').css('background-image', 'url(' + imgUrl + ')');
}
setInterval(changeBg,5000);

我的问题是我如何才能顺利地改变图像,而不是"只是替换"?如何避免同一图像连续出现

如果你使用fadeInfadeOut函数,你可以得到一个更平滑的图像变化

var imgs = new Array("img1.jpg","img2.jpg","img3.jpg","img4.jpg","img5.jpg");
function changeBg() {
    var imgUrl = imgs[Math.floor(Math.random()*imgs.length)];
    $('#header').css('background-image', 'url(' + imgUrl + ')');
    $('#header').fadeIn(1000); //this is new, will fade in smoothly
}
function changeBackgroundSmoothly() {
    $('#header').fadeOut(1000, changeBg); //this is new, will fade out smoothly
}
setInterval(changeBackgroundSmoothly,5000);

查看结果

关于图像的随机性,你不能做很多,如果它必须是随机的。很简单,因为随机意味着相同的图像可能在一行中出现两次,否则它就不是完全随机的,因为您可以排除一个结果。

一种解决方案可能是不随机显示图像,而是按照预定义的顺序显示,请参阅此站点的示例。

另一种方法

$("#header").fadeOut(500, //Speed
                     function () { //On fadeOut complete
                            $(this).css("background-image", "url(img2.jpg)") //Change BG
                                   .fadeIn(); //FadeIn
                     });

您可以在这里查看:https://jsfiddle.net/rafaelaca/wwjro184/

最新更新