首先我想提两件事,
一:我的代码并不完美(尤其是 eval 部分)——但我想为自己尝试一些东西,看看我是否可以复制 jQuery Animation 函数,所以请原谅我“不好”的做法,请不要建议我使用 jQuery,我想尝试一下。
二:这段代码还没有完成,我只是想弄清楚是什么让它工作得不好。
所以动画运行了大约 12 秒,而我输入的持续时间参数是 15 秒,我做错了什么?
function animate(elem, attr, duration){
if(attr.constructor === Object){//check for object literal
var i = 0;
var cssProp = [];
var cssValue = [];
for(key in attr) {
cssProp[i] = key;
cssValue[i] = attr[key];
}
var fps = (1000 / 60);
var t = setInterval(function(){
for(var j=0;j<cssProp.length;j++){
if(document.getElementById(elem).style[cssProp[j]].length == 0){
//asign basic value in css if the object dosn't have one.
document.getElementById(elem).style[cssProp[j]]= 0;
}
var c = document.getElementById(elem).style[cssProp[j]];
//console.log(str +" | "+c+"|"+cssValue[j]);
if(c > cssValue[j]){
document.getElementById(elem).style[cssProp[j]] -= 1/((duration/fps)*(c-cssValue[j]));
}else if(c < cssValue[j]){
document.getElementById(elem).style[cssProp[j]] += 1/((duration/fps)*(c-cssValue[j]));
}else if(c == cssValue[j]){
window.clearInterval(t);
}
}
},fps);
}
}
animate('hello',{opacity:0},15000);
html:
<p id="hello" style="opacity:1;">Hello World</p>
注意:我猜是有问题
(持续时间/fps)*(c-cssValue[j])
setInterval(fps 变量)的部分或/和间隔。
提前谢谢。