学习笔记:打开关闭动画效果
效果原帖在这:http://bbs.blueidea.com/viewthread.php?tid=2844175&extra=&page=1
我主要是自己在学习这段脚本的时候,给自己弄个小档案,同时也写了注释,方便自己,也分享给大家。
先预览下效果:
提示:你可以先修改部分代码再运行。
对其中的js我做了很简单的注释。
- var oWE="500"; //层的宽度
- var oHE="200"; //层的高度
- var proX;
- var proY;
- //打开层fd
- function show(id){
- clearInterval(proX);
- clearInterval(proY);
- //先定义将要展开层(fd)的属性,包括高度,长度。
- o=document.getElementById(id);
- o.style.display="block";
- o.style.width="1px";
- o.style.height="1px";
- proX=setInterval(function(){openX(o,oWE)},10);
- }
- //层fd的宽度
- function openX(o,x){
- oWN=parseInt(o.style.width); //parseInt 将变量转换为整数
- if (x > oWN){
- o.style.width=(oWN+Math.ceil((x-oWN)/5))+"px";//让它有渐进的效果,也可以使用固定值代替
- }else{
- clearInterval(proX);
- proY=setInterval(function(){openY(o,oHE)},10);
- }
- }
- //层fd的高度
- function openY(o,y){
- oHN=parseInt(o.style.height);
- if (y > oHN){
- o.style.height=oHN+Math.ceil((y-oHN)/5)+"px";
- }else{
- clearInterval(proY);
- }
- }
- //关闭层fd
- function closed(id){
- clearInterval(proX);
- clearInterval(proY);
- o=document.getElementById(id);
- if (o.style.display=="block"){
- proYc=setInterval(function(){closeY(o)},10);//先关闭y轴,再关闭x轴
- }
- }
- function closeY(o){
- oHN=parseInt(o.style.height);
- if (oHN > 0){
- o.style.height= (oHN - Math.ceil(oHN/5))+"px";
- }else{
- clearInterval(proYc);
- proXc=setInterval(function(){closeX(o)},10);
- }
- }
- function closeX(o){
- oWN=parseInt(o.style.width);
- if (oWN > 0){
- o.style.width=(oWN- Math.ceil(oWN/5))+ "px";
- }else{
- clearInterval(proXc);
- o.style.display="none";
- }
- }

如需转载请注明文章来源,本文链接: http://icojump.in/?p=90
发表您宝贵的评论