function startMove(node, cssObj, complete) {
//complate = show;
clearInterval(node.timer);
node.timer = setInterval(function () {
var isEnd = false; //假设都到目的值了 (质数那里一样) 如果只有一个到达目的值不效果 全都到达目的值才执行
for (var attr in cssObj) {
var iTarget = cssObj[attr];
//通过getStyle方法获取当前值
var iCur = null;
if (attr === “opacity”) {
iCur = parseInt(parseFloat(getStyle(node, “opacity”)) * 100);
} else {
iCur = parseInt(getStyle(node, attr));
}
var speed = (iTarget - iCur) / 8;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
iCur += speed;
if (attr === "opacity") {
node.style.opacity = iCur / 100;
node.style.filter = `alpha(opacity=${iCur})`;
} else {
node.style[attr] = iCur + "px";
}
if(iCur !== iTarget){//只要有一个不达到就不为true
isEnd = true;
}
}
//等所有动画都到达目的值以后,执行
if(isEnd==false){
clearInterval(node.timer);
if(complete){
complete.call(node);
}
}
}, 30);
}
//封装一个跨浏览器兼容的获取当前有效样式的函数
function getStyle(node, cssStyle) {
return node.currentStyle
? node.currentStyle[cssStyle]
: getComputedStyle(node)[cssStyle];
}