【发布时间】:2021-11-12 03:35:42
【问题描述】:
我正在制作一个作品集网站,并希望每隔几秒使用 SetInterval 制作一个带有过渡图像的英雄部分。我试过这个:
请注意,我将背景图片放在 CSS 中,而不是作为 HTML 中的 img。
var images = [
'https://via.placeholder.com/728x90.png?text=slide1',
'https://via.placeholder.com/728x90.png?text=slide2',
'https://via.placeholder.com/728x90.png?text=slide3',
'https://via.placeholder.com/728x90.png?text=slide4',
];
var container = document.getElementById('hero');
var i = 0;
setInterval(function() {
var newImg = "url('" + images[i] + "')"
// console.log(newImg);
container.style.background = newImg;
i = i + 1;
if (i == images.length) {
i = 0;
}
}, 1000);
#hero {
height: 100vh;
width: 100%;
background: linear-gradient(rgba(0, 0, 0, 0.342), rgba(0, 0, 0, 0.342)), url('https://via.placeholder.com/728x90.png?text=slide1') fixed no-repeat center / cover;
color: #fff9ff;
transition: opacity 1s;
opacity: 1;
}
<section id="hero">
<div class="heroContainer">
<div id="info">
<h1>Lorem Ipsum</h1>
<h2>Lorem ipsum.</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis nesciunt excepturi quos obcaecati incidunt voluptatem ipsam sunt ipsum, autem deleniti cupiditate molestias quis unde quae totam porro dicta</p>
<a id="heroButton" href="#">Contact Me</a>
</div>
</div>
图像没有过渡,我收到以下错误:
url('未定义')
main.js:70 Uncaught TypeError: Cannot set properties of undefined (setting 'background')
有人知道为什么吗?顺便说一句,我想继续使用 SetInterval!
【问题讨论】:
-
我更新了你的 sn-p
-
container.style.background = newImg;更新背景并清除背景的所有其他属性
-
请edit您的问题并添加您的错误文本,而不是错误文本的图像。
-
您可能希望转换
background属性而不是opacity,因为您不会每秒更改opacity。您可能还想更改转换时间或超时,以便转换有时间在下一个开始之前完全运行。 -
您不会在此处收到该错误。这意味着您在找到元素之前执行代码。包裹在
window.addEventListener("load", function() {..... });中,也许改换类。然后图像可以在 CSS 中
标签: javascript html