封装好的运动函数 doMove
function doMove ( obj, attr, dir, target, endFn ) {
dir = parseInt(getStyle( obj, attr )) < target ? dir : -dir;
clearInterval( obj.timer );
obj.timer = setInterval(function () {
var speed = parseInt(getStyle( obj, attr )) + dir;
if ( speed > target && dir > 0 || speed < target && dir < 0 ) {
speed = target;
}
obj.style[attr] = speed + 'px';
if ( speed == target ) {
clearInterval( obj.timer );
endFn && endFn();
}
}, 30);
}
function getStyle ( obj, attr ) { return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }
解析:doMove
( obj, attr, dir, target, endFn
)
obj --> 要运动的对象 // div...
attr
--> 运动的相对方向 // top/left ,也可以是height / width
dir -->
运动速度
target --> 目标点,要到达的位置
endFn
-->回调函数,可有可无,
示例:回调函数里面可以嵌套
doMove ( oDiv, 'left', 12, 900, function () {
doMove ( oDiv, 'top', 34, 500 ,function(){
doMove ( oDiv, 'left',20,20,function(){
doMove ( oDiv, 'top',20,40);
});
});
});