;(function changeColor() {
var arr = ['#00CC99', '#00FFFF', '#CCCCFF']
var t = 2000
var n = false
var body = document.querySelector('body')
body.style.transition = 'background-color 500ms'
function change() {
n = !n
var v = arr.shift()
body.style.backgroundColor = v
arr.push(v)
if(n) {
setTimeout(change, t)
} else {
setTimeout(change, 3*t)
}
}
change()
})()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script>
var color1=null;
var color2=null;
function random(){
return '#'+Math.random().toString(16).slice(2,8);
}
function start(){
color1=random();
document.body.style.backgroundColor=color1;
setTimeout(changeColor, 2000);
}
function changeColor(){
var a,b,c,i=0;
var animate=null;
color2=random();
var array1=strSlip(color1);
var array2=strSlip(color2);
var r1=array2[0]-array1[0];
var r2=array2[1]-array1[1];
var r3=array2[2]-array1[2];
animate=setInterval(function(){
array1[0]=array1[0]+Math.round(r1/30);
array1[1]=array1[1]+Math.round(r2/30);
array1[2]=array1[2]+Math.round(r3/30);
a=array1[0].toString(16);
b=array1[1].toString(16);
c=array1[2].toString(16);
i++;
document.body.style.backgroundColor=returnColor(a,b,c);
if(i==20){
clearInterval(animate);
color1=returnColor(a,b,c);
}
},100);
setTimeout(changeColor, 7000);
}
function returnColor(a,b,c){
return "#"+a+b+c;
}
function strSlip(str){
var num=[];
var x=parseInt(str.substring(1,3),16);
var y=parseInt(str.substring(3,5),16);
var z=parseInt(str.substring(5,7),16);
num.push(x);
num.push(y);
num.push(z);
return num;
}
start();
</script>
</body>
</html>
循环的话可以用setInterval函数,然后再里面实现颜色切换:
补充:
其实完全可以用css3的animation实现。
屎代码,题主将就看吧,望大大狂喷
直接复制粘贴到console,enter看效果
我重新描述下我理解到你想要的动画过程吧!不对请指出
time0: 颜色1
time1: 维持颜色1
time2: 开始向颜色2渐变(此时任然是颜色1)
time3: 颜色完全由颜色1渐变为颜色2
time4: 维持颜色2
。。。
重复以上过程(颜色可以不止2种)
其中
time1 - time0
是颜色维持的时间(较长)time2 = time1
time3 - time2
是颜色渐变的过渡时间(较短)time4 - time3 = time1 - time0
如果上述描述的过程是题主的意思,请往下看,否则可以忽略了
这个东西可以用纯css实现,也可以css结合js实现
纯css实现使用css3的animate + keyframe来实现,不多做介绍
css+js实现:
css部分
js部分
以下的
$element
是这个元素的jquery实例正好我以前写过一个这个,是你要的东西吗?
http://codepen.io/fishenal/pen/LhHsg
以前写的,仅供参考啊。
http://www.cnblogs.com/zjfree/archive/2011/10/20/2219071.html
http://www.cnblogs.com/zjfree/archive/2011/10/20/2219044.html