我使用 Rails 4,终于让这个 javascript 工作了。它每 10 秒随机改变一次背景图像,并具有淡入淡出效果。
唯一的问题是,图像常常只能加载一半......然后它就会开始闪烁并变得疯狂。它将继续不规律地从一张图片闪烁到另一张图片,直到我刷新页面。
有谁知道为什么会这样吗?也许 javascript 写得不好?我的所有图片都位于公共(public)/ Assets 中。
home.html.erb:
<div id="imageDiv" class="imageContainer"></div>
<script>
var myImages = new Array("sushi.jpg", "pizza.jpg", "steak.jpg", "greens.jpg", "pancakes.jpg", "redbull.jpg", "coffeepow.jpg", "frenchfries.jpg", "tabs.jpg", "cigarettes.jpg", "noodles.jpg", "jelly.jpg", "pills2.jpg", "pills3.jpg", "gator.jpg", "needle.jpg", "tv.jpg", "cantop.jpg", "spices.jpg", "sliders.jpg", "fishoil.jpg", "chips.jpg", "cherries.jpg", "ciglighter.jpg", "eggs.jpg", "bakingsoda.jpg", "pasta.jpg", "beer.jpg", "champagne.jpg", "peppers.jpg");
$(document).ready(function() {
var random = myImages[Math.floor(Math.random() * myImages.length)];
random = 'url(assets/' + random + ')';
$('#imageDiv').css('background-image', random);
setInterval(function() {
SetImage();
}, 10000);
});
function SetImage() {
var random = myImages[Math.floor(Math.random() * myImages.length)];
random = 'url(assets/' + random + ')';
$('#imageDiv').fadeOut(900);
setTimeout(function () {
$('#imageDiv').css('background-image', random);
$('#imageDiv').fadeIn(900);
}, 900);
}
</script>
最佳答案
我真的不想深入了解您的代码,用两个词来说:无论发生什么,都正在发生,因为您必须等待某些操作完成才能完成(例如动画),并且您永远不希望在其中出现超时间隔。
这一定有帮助:
var images = ["http://i.imgur.com/xYDljlP.jpg",
"http://i.imgur.com/f9MgLTO.jpg",
"http://i.imgur.com/ECM9LKl.jpg"];
function setBackground() {
var rand = Math.floor(Math.random() * images.length);
$( "#imageDiv" ).fadeOut(300, function() {
$( "#imageDiv" ).css("background", "url( " + images[rand] + " )");
$( "#imageDiv" ).fadeIn(300, function() {
setTimeout(setBackground, 3000);
});
});
}
setBackground();
请参阅 fiddle :jsfiddle
关于Javascript 更改随机背景图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854827/