js--运动框架

####一:查询知识点

  • obj.style.attr只能获取行内样式设置的属性值,obj.currentStyle和getComputedStyle(obj,false)[attr]可以获取内联样式表和外链样式表设置的属性值,其中obj.currentStyle是在IE下使用的方法

####二:说明

  • 该框架只能设置opacity和以px为单位的属性值

####三:代码

function getStyle(obj,name){
				if(obj.currentStyle){//IE下使用
					return obj.currentStyle[name];
				}else{
					return getComputedStyle(obj,null)[name];
				};
			};
			function motion(obj,json,func){
				clearInterval(obj.timer);
				
				obj.timer = setInterval(function(){
					var stopSig = true;
					for(var name in json){
						//获取目前对象属性值
						var cur = 0;
						if(name == 'opacity'){
							cur = Math.round(parseFloat(getStyle(obj,name))*100);
						}else{
							cur = parseFloat(getStyle(obj,name));
						};
						//获取要设置的属性值
						var valTarget = json[name];
						if(name == 'opacity'){
							valTarget *= 100;
						};
						//设置定时器每次改变的属性值大小
						var valSpeed = (valTarget - cur)/6;
						valSpeed = valSpeed > 0 ? Math.ceil(valSpeed) : Math.floor(valSpeed);
						
						//使用valSpeed设置新的属性值
						if(name == 'opacity'){
						//兼容IE
							obj.style.filter = 'alpha(opacity:' + (cur + valSpeed) + ')';
							obj.style.opacity = (cur + valSpeed)/100;
						}else{
							obj.style[name] = cur + valSpeed + 'px'; 
						};
						//当目前属性值不等于目标值时
						if(cur != valTarget){
							stopSig = false;
						};
					};
					//stopSig==true表示所有属性值都达到了目标值,清楚这个定时器
					if(stopSig){
						clearInterval(obj.timer);
						if(func){
							func();
						};
					};
				},50);
			};

有好的建议或者有发现错误请在评论中指出,谢谢—noob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值