在循环中更改 div 元素的背景颜色交叉淡入淡出

Posted

技术标签:

【中文标题】在循环中更改 div 元素的背景颜色交叉淡入淡出【英文标题】:Change Background-Color of div element Cross Fade in a Loop 【发布时间】:2013-07-28 10:16:46 【问题描述】:

我想通过 crossfade 将 div 元素的背景颜色从黑色变为红色再变为蓝色,但现在不知道该怎么做。我尝试用图像来做,但是将图像作为背景并通过淡化效果进行更改会使它变得沉重。有没有办法通过 CSS 或 javascript 来做到这一点?请帮忙。

【问题讨论】:

通过淡入淡出 jsfiddle.netTytSZ 将 div 元素的背景颜色从黑色变为红色再变为蓝色。我尝试用图像来做,但是将图像作为背景并通过淡入淡出效果进行更改使其变得沉重jsfiddle.net/562am 【参考方案1】:

CSS:

.fadechange 
    height:200px;
    width:100%;
    background: black;
    animation: fading 4s infinite;
   -webkit-animation: fading 4s infinite;


@keyframes fading 
    0%    background: black; 
    33%   background: red; 
    66%   background: blue; 
    100%  background: black; 


@-webkit-keyframes fading 
    0%    background: black; 
    33%   background: red; 
    66%   background: blue; 
    100%  background: black; 

根据 w3schools,这必须在 IE(10+)、Opera、Chrome、Safari 和 Firefox 中工作。 http://www.w3schools.com/cs-s-ref/css3_pr_animation-keyframes.asp

jsfiddle

【讨论】:

感谢 Maria 提供这个有效的解决方案。它工作得很好。我对上面的代码几乎没有任何疑问。时间间隔如何管理?关键帧与旧浏览器的兼容性是什么,我读到它在 IE9 以下不兼容? 这意味着整个动画持续 4 秒。动画从 0% 开始,到 100% 结束,所以在 1.33s 后会变成红色,在 2.66s 时会变成蓝色,在 4s 后会再次变成黑色。这会无限重复。 谢谢,一段时间后我想通了。它工作得很好,但一段时间后,它会滞后并变慢。它不像这里 jsfiddle.net/NFyPX 那样同步。

以上是关于在循环中更改 div 元素的背景颜色交叉淡入淡出的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何使用交叉淡入淡出动画更改状态栏颜色[重复]

如何使用 cocoalibspotify 进行音频交叉淡入淡出?

jQuery在悬停时更改(带有淡入淡出动画)div的背景图像

角度6背景图像交叉淡入淡出动画

使用淡入淡出动画从布尔[重复]更改背景颜色视图

使用另一个图像淡入/淡出背景图像/淡出其他元素