// 兼容性获取对象属性
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) / 8;
iSpeed = iSpeed>0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
// 检测是否所有运动都完成
if(iCur != json[attr]){
bStop = false;
}
// 对象属性变化
if(attr == "opacity"){
obj.style.filter = 'alpha(opacity:'+(iCur+iSpeed)+')';
obj.style.opacity = (iCur+iSpeed)/100;
}else{
obj.style[attr] = iCur + iSpeed + "px";
}
}
// 停止运动
if(bStop){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},30);
}