我有一些从 codepen.io 获得的 Javascript 代码。但是我很难执行它,尽管它是完全相同的代码。我只是在学习 Javascript,所以我是初学者。我没有使用 HTML,我只使用了 CSS 和 Javascript。背景图像确实随机播放,但淡入淡出不起作用。
这是我的 CSS 片段:
body {
margin: 0;
background-image: url(/image1.jpg) no-repeat center center fixed;
background-size: cover;
margin: 0;
width: 100%;
height: 100%;
transition: 1s;
}
这是它附带的 JS。
var bgImageArray = ["image2.jpg", "image3.jpg", "image4.jpg"],
base = "/",
secs = 4;
bgImageArray.forEach(function(img){
new Image().src = base + img;
// caches images, avoiding white flash between background replacements
});
function backgroundSequence() {
window.clearTimeout();
var k = 0;
for (i = 0; i < bgImageArray.length; i++) {
setTimeout(function(){
document.documentElement.style.background = "url(" + base + bgImageArray[k] + ") no-repeat center center fixed";
document.documentElement.style.backgroundSize ="cover";
if ((k + 1) === bgImageArray.length) { setTimeout(function() { backgroundSequence() }, (secs * 1000))} else { k++; }
}, (secs * 1000) * i)
}
}
backgroundSequence();
如有任何帮助,我们将不胜感激!
最佳答案
我认为问题在于您将 CSS 规则定义到 body
但在您的 JavaScript 中,新图像附加到 documentElement,它等于 html
标记而不是 body
标签。
尝试更改这些行:
document.documentElement.style.background = "url(" + base + bgImageArray[k] + ") no-repeat center center fixed";
document.documentElement.style.backgroundSize ="cover";
为此:
document.body.style.background = "url(" + base + bgImageArray[k] + ") no-repeat center center fixed";
document.body.style.backgroundSize ="cover";
刚刚将 documentElement
更改为 body
关于Javascript 代码不会交叉淡入淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32899388/