多物体链式运动,变形可以,透明度变不了

来源:5-1 JS链式动画

llleif

2016-07-05 18:59

//经过测试发现getStyle(obj,'opactiy')是没有的,所以后面的都错了,但不知道哪里出错了。。。

window.onload = function(){
	var aLi = document.getElementsByTagName('li');
	for(var i=0; i < aLi.length; i++)
	{
		aLi[i].timer = null;
		aLi[i].onmouseover = function(){
			var _this = this;
			startMove(_this,'width',400,function(){
				startMove(_this,'height',400,function(){
					startMove(_this,'opactiy',100);//前面都可以,就这个改变不了
					});
				});
			}
		aLi[i].onmouseout = function(){
			var _this = this;
	//这里若加上变透明度的直接全部运行都恢复不了
				startMove(_this,'height',100,function(){
					startMove(_this,'width',200);
					});
				
			}
	}
}

function startMove(obj,attri,iTarget,fn)
{
	clearInterval(obj.timer);
	obj.timer=setInterval(function()
	{
		var ic=0;
			  if (attri == 'opactiy')
			  {
			     ic=Math.round(parseFloat(getStyle(obj,attri))*100)
			  }
			  else
			  {
	             ic=parseInt(getStyle(obj,attri));
			  }
			var speed=(iTarget-ic)/8;
			speed=speed>0?Math.ceil(speed):Math.floor(speed);
			if (ic==iTarget){
				clearInterval(obj.timer);
				if (fn){
					fn();
				}
			}
			else
			{
				if(attri=='opacity')
				{
					obj.style.opacity = (ic+speed)/100;
					obj.style.filter='alpha(opacity:'+ic+speed+')';
				}	 
				else{
				obj.style[attri]=ic+speed+'px';
				}
			 }
	},30)
}
//获取函数
function getStyle(obj,attri){
	if(obj.currentStyle){
		return obj.currentStyle[attri];//针对ie浏览器
	}
	else{
	    return getComputedStyle(obj,false)[attri];//针对firefox浏览器
	}
}	


写回答 关注

1回答

  • qq_小河_1
    2016-07-06 01:14:28
    已采纳

    第三个的opacity写错了

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题