原生js之运动函数的封装

//运动函数
function startMove(obj,json,callback){ //{width:3,height:300}
	clearInterval( obj.timer );
	obj.timer = setInterval( function(){
		var flag = true;//假设值为true时 可以停止定时器
		for( var attr in json ){
			var current = 0;
			if( attr == "opacity" ){
				current = getStyle(obj,attr) * 100 ;
			}else if( attr == "zIndex" ){
				current = parseInt( getStyle(obj,attr) ) ;
			}else{
				//获取元素的样式值
				current = parseInt( getStyle(obj,attr) ) ;
			}
			//缓冲运动速度确定
			var speed = (json[attr] - current)/10;
			speed = speed > 0 ? Math.ceil( speed ) : Math.floor( speed );
			if( current != json[attr] ){
				//动作没有完成 flag 就要变成false
				flag = false;
			}
			//继续设置样式
			if( attr == "opacity" ){
				obj.style[attr] = (current + speed)/100;
			}else if( attr == "zIndex" ){
				obj.style[attr] = json[attr];
			}else{
				obj.style[attr] = current + speed + "px";
			}
		}
		//如果循环结束后 flag的值还是true 假设成立 可以停止定时器了
		if( flag ){ //动作完成的条件
			clearInterval( obj.timer );
			//下一个动作功能不确定 所以通过一个参数传递 这个参数表示函数
			//上一个动作完成后进入到下一个动作
			if( callback ){
				callback();
			}
		}
	} , 30 )
}
//获取css样式值
function getStyle(obj,attr){
	if( window.getComputedStyle ){
		return window.getComputedStyle(obj,false)[attr];
	}else{
		return obj.currentStyle[attr];
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风舞红枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值