如何通过彩虹的所有颜色随时间改变div的背景颜色,然后再将其重新设置为原始颜色并循环进行无限处理?
下面的代码是我想要的结果,但只有一个div逐渐改变颜色。
<div id="rainbow"></div>
.rainbow {
background-color: blue;
float:left;
width: 70px;
height:70px;
border: 1px solid white;
}
.rainbow:first-child {
background-color: red;
}
.rainbow:nth-child(2) {
background-color: orange;
}.rainbow:nth-child(3) {
background-color: yellow;
}.rainbow:nth-child(4) {
background-color: Chartreuse;
}.rainbow:nth-child(5) {
background-color: cyan;
}.rainbow:nth-child(6) {
background-color: blue;
}.rainbow:nth-child(7) {
background-color: DarkOrchid;
}.rainbow:nth-child(8) {
background-color: DeepPink;
}.rainbow:nth-child(9) {
background-color: red;
}
.rainbow:last-child {
background-color: Chartreuse;
float:left;
border: 1px solid white;
clear:both;
}
<div class="rainbow">Original color</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div><div class="rainbow">After some time</div><div class="rainbow">After some time</div><div class="rainbow">Come back to red and loop</div>
<br style="clear:both">
All of the above in just one div
答案 0 :(得分:2)
您可以创建 css动画来更改背景颜色。要制作动画循环,您可以添加infinite
并获得可以使用的颜色的平滑过渡linear
div {
background-color: #FF0000;
animation: bgColor 5s infinite linear;
width: 200px;
height: 100px;
}
@keyframes bgColor {
12.5% {
background-color: #FF0000;
}
25% {
background-color: #FFA500;
}
37.5% {
background-color: #FFFF00;
}
50% {
background-color: #7FFF00;
}
62.5% {
background-color: #00FFFF;
}
75% {
background-color: #0000FF;
}
87.5% {
background-color: #9932CC;
}
100% {
background-color: #FF1493;
}
}
<div></div>
答案 1 :(得分:1)
您需要使用关键帧来动画css
#rainbow {
background-color: blue;
float:left;
width: 70px;
height:70px;
border: 1px solid white;
-webkit-animation-name: example; /* Chrome, Safari, Opera */
-webkit-animation-duration: 4s; /* Chrome, Safari, Opera */
animation-name: example;
animation-duration: 4s;
animation-iteration-count: infinite;
}
@keyframes example {
0% {background-color: red; }
25% {background-color: yellow; }
50% {background-color: blue; }
75% {background-color: green; }
100% {background-color: red; }
}
/* Chrome, Safari, Opera */
@-webkit-keyframes example {
0% {background-color: red; }
25% {background-color: yellow; }
50% {background-color: blue; }
75% {background-color: green; }
100% {background-color: red; }
}
&#13;
<div id="rainbow"></div>
&#13;
答案 2 :(得分:0)
你可以通过关键帧实现这一目标
.rainbow {
float:left;
width: 70px;
height:70px;
border: 1px solid white;
}
.rainbow:last-child {
float:left;
border: 1px solid white;
clear:both;
}
@keyframes color {
0% {
background-color: red;
}
10% {
background-color: orange;
}
20% {
background-color: yellow;
}
30% {
background-color: Chartreuse;
}
40% {
background-color: cyan;
}
50% {
background-color: blue;
}
60% {
background-color: DarkOrchid;
}
70% {
background-color: DeepPink;
}
80% {
background-color: red;
}
90% {
background-color: red;
}
100% {
background-color: red;
}
}
.rainbow {
animation: color 8s infinite;
}
&#13;
<div class="rainbow">Original color</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div>
<div class="rainbow">After some time</div><div class="rainbow">After some time</div><div class="rainbow">After some time</div><div class="rainbow">Come back to red and loop</div>
<br style="clear:both">
All of the above in just one div
&#13;
答案 3 :(得分:0)
我是用纯 Javascript 制作的。 (还有on github)
let r = 255
let g = 0
let b = 0
function rgb(r, g, b){
return "rgb("+r+","+g+","+b+")"
}
function myTimer () {
if (r < 255 && g == 0 && b == 0) {
r++
} else if (r == 255 && g < 255 && b == 0) {
g++
} else if (r > 0 && g == 255 && b == 0) {
r--
} else if (r == 0 && g == 255 && b < 255) {
b++
} else if (r == 0 && g > 0 && b == 255) {
g--
} else if (r < 255 && g == 0 && b == 255) {
r++
} else if (r == 255 && g== 0 && b > 0) {
b--
}
document.body.style.backgroundColor = rgb(r, g, b)
}
setInterval(myTimer, 10)