运动函数的封装(多个属性).js //此运动只能用在样式值为数值的样式;json数据输入的是样式名和目标样式function animate(obj,json,fn){var sss = 40;clearInterval(obj.timer);obj.timer = setInterval(functi
//此运动只能用在样式值为数值的样式;json数据输入的是样式名和目标样式
function animate(obj,json,fn){
var sss = 40;
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var flag = true;
for(var attr in json){
var current = 0;
if (attr == "opacity") {
console.log(getStyle(obj,attr));
current = getStyle(obj,attr)*100 || 0;
var step = (json[attr] * 100 - current) / 10;
}else{
current = parseInt(getStyle(obj,attr));
var step = (json[attr] - current) / 10;
}
step = step > 0 ? Math.ceil(step) : Math.floor(step);
if(attr == "opacity"){
if( "opacity" in obj.style ){
obj.style[attr] = (current + step) / 100;
}else{
obj.style.filter = "alpha(opacity="+ current + step +")";
}
}else{
obj.style[attr] = current + step + "px";
}
if (current != json[attr]) {
flag = false;
};
}
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}else{
console.log("1"+fn);
}
}
},30)
}
function getStyle(obj,attr){ //注意:ie8以下,对于没有直接定义opactiy值时,getStyle(obj,attr)返回的是undefine
if(obj.currentStyle) //ie等
{
return obj.currentStyle[attr];
}else{
return window.getComputedStyle(obj,null)[attr]; //w3c
}
}
