js动画--封装透明度

这一章我将讲述一些如何将透明度的变化也封装到调用函数中,对于前面几节课的介绍,已经将基本的属性封装到函数中了,宽,长等属性。关于透明度的变化还是有一点区别的,这一章我将封装透明度

先创建一个div

<!DOCTYPE html>
<html>
<head>
<title>js动画事件</title>
<link href="move.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="move.js"></script>
</head>
<body>
<div id="div1">
</div>
</body>
</html>

给这个div设置一些属性值(注意奥,这里面的透明度的设置)

#div1{
    width:200px;
    height:200px;
    background-color:red;
    opacity:0.3;//火狐浏览器支持的透明度的设置
    filter:alpha(opacity:30);//IE浏览器支持的方式
}

实现透明度的封装

var timer;
window.onload=function(){
	var div=document.getElementById("div1");
	div.onmouseover=function(){
		startMove(this,"opacity",100);
	}
	div.onmouseout=function(){
		startMove(this,"opacity",30);
	}
}
function startMove(obj,attr,target){
	clearInterval(timer);
	timer=setInterval(function(){
		var icur;
		if(attr=="opacity"){
		 icur=Math.round(parseFloat(getStyle(obj,attr))*100);//关键一步在这里,我们设置透明度属性时,getStyle获得的是0~1之间的数,所以要parseFloat一下,然后在乘以100转化到0~100之间,最后要四舍五入一下。
		}else{
			icur=parseInt(getStyle(obj,attr))
			
		}
		var speed=(target-icur)/8;
		 speed=speed>0? Math.ceil(speed):Math.floor(speed);
		  
		if(icur==target){
			clearInterval(timer);
		}else{
			if(attr="opacity"){
				obj.style.opacity=(icur+speed)/100;
				obj.style.filter="alpha(opacity"+(icur+speed)+")";//还有这里,对于透明度来说,后面是没有"px"的,所以要判断一下。
			}
				obj.style[attr]=parseInt(getStyle(obj,attr))+speed+"px";	
		}
	},50)
}
 
 
 function getStyle(obj,attr){
	 if(obj.currentStyle){
		 return obj.currentStyle[attr];
	 }else if(getComputedStyle){
		 return getComputedStyle(obj,false)[attr];
	 }
 }

  

posted @ 2016-01-11 10:31  秋天的故事  阅读(267)  评论(0编辑  收藏  举报