javascript - 淡入新背景并在 10 秒后淡出

标签 javascript css

我试图让我的网站每 10 秒更改一次背景。它是成功的。现在,我想让它们淡入淡出,这样它们就会显得平滑。我搜索了其他论坛页面并找到了相关问题,但我无法很好地理解答案。

Javascript:

function run(interval, frames) {
var int = 1;

function func() {
    document.body.id = "b"+int;
    int++;
    if(int === frames) { int = 1; }
}

var swap = window.setInterval(func, interval);
}

run(10000, 6); //milliseconds, frames

CSS:

#b1 { background-image: url("standaard01.jpg"); }
#b2 { background-image: url("standaard02.jpg"); }
#b3 { background-image: url("standaard03.jpg"); }
#b4 { background-image: url("standaard04.jpg"); }
#b5 { background-image: url("standaard05.jpg"); }
#b6 { background-image: url("standaard06.jpg"); }
#b7 { background-image: url("standaard07.jpg"); }
#b8 { background-image: url("standaard08.jpg"); }
#b9 { background-image: url("standaard09.jpg"); }
#b10 {  background-image: url("standaard10.jpg"); }

最佳答案

遗憾的是,无法在设置为单个元素背景的两个图像之间进行转换。 (更正:是的,通过动画元素的背景图像属性 - 给定浏览器支持)

但是,您可以使一个元素淡出,而另一个元素位于它后面。

Jquery 有一个名为 .fadeToggle() 的方法,您可以在这种情况下使用它。

使用 position:absolute, left, and top CSS 属性设置一个 img 元素或带有 bg 图像的 div 的“堆栈”,放置在彼此的顶部。

然后,在您的 javascript 循环中,每 10 秒 .fadetoggle() 当前可见的 div,显示下一张图像。您可以使用索引变量跟踪状态。

到达最后一个元素后,再次淡化顶部图像。然后在第二个元素消失之前,.show() 剩余的元素,以便它们再次可见以进行显示。

关于 z-index 的注意事项:CSS 属性 z-index 会将元素定位在其他元素的前面或后面。因此,明智的做法是在每个元素的 css 类中或以编程方式在加载页面时为每个元素设置正确的 z-index。

图片大小注意事项:如果图片或 div 的尺寸不同,您将淡入一个,同时淡出另一个。从这里我们可以讨论不同的交叉渐变方法,但这超出了本次讨论的范围

祝你好运:)

关于javascript - 淡入新背景并在 10 秒后淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569462/

相关文章:

css - 在 zurb Foundation 网格中嵌套行

html - 悬停时 CSS3 阴影变暗

javascript - 搜索数组的函数

javascript - ngrepeat 中的 Angularjs 动态指令

javascript - Javascript 中是否有类似 Haskell 类型签名的约定

javascript - 如何使页面上的按钮居中

javascript - VS 代码 - 引用错误 : $ is not defined WHY?

javascript - 如何使 javascript 将操作应用于所有选中的复选框?

css - 水平滚动条并禁用垂直滚动

javascript - 带有单选按钮的 Jquery 弹出窗口