// json{key: value}
// json{att: iTarget};
// 当有一个到达目的地就停止了
// 当所有的值都到达目的地才停止
function startMove(obj, json, endFn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
// 记录到底停不停
// 假设所有的都到目的地了
var bStop = true;
for (var att in json) {
// att 属性名
// json[att] 目标位置
var offsetCur = 0;
// 判断是否为透明度
if (att == 'opacity') {
offsetCur = Math.round(parseFloat(getStyle(obj, att)) * 100);
} else {
offsetCur = parseInt(getStyle(obj, att));
}
var speed = (json[att] - offsetCur) / 6;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
// 三次循环都没有满足if的条件,出去的时候才是true
// 当属性值没有到达目的地时
if (json[att] != offsetCur) {
bStop = false;
}
// 判断是否为透明度
if (att == 'opacity') {
obj.style.filter = "alpha(opacity:" + (offsetCur + speed) + ")";
obj.style.opacity = (offsetCur + speed) / 100;
} else {
obj.style[att] = offsetCur + speed + 'px';
}
}
if (bStop == true) {
clearInterval(obj.timer);
if (endFn) {
endFn();
}
}
}, 20);
}
// 参数1:获取谁的
// 参数2:获取这个元素的哪个样式
function getStyle(obj, name) {
if (obj.currentStyle) {
return obj.currentStyle[name];
} else {
return getComputedStyle(obj, false)[name];
}
}