该运动函数适用于链式运动,完美运动。同时对元素opacity的改变也可以完美实现
//获取样式函数
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else {
return getComputedStyle(obj,false)[attr];
}
}
//运动框架 对象 目标值
function startMove(obj,json,fn){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var bStop=true; //这一次运动就结束了
for(var attr in json){
//取当前值
var iCur=0;
if(attr=="opacity"){
iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
}else {
iCur=parseInt(getStyle(obj,attr));
}
//算速度
var iSpeed=(json[attr]-iCur)/10;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
//开始检测停止
if(iCur!=json[attr]){
bStop=false;
}
if(attr=="opacity"){
obj.style.opacity=(iCur+iSpeed)/100;
}else {
obj.style[attr]=iCur+iSpeed+"px";
}
}
if(bStop){
clearInterval(obj.timer);
if (fn) {
fn();
}
}
},30)
}