您的位置:首页 > 其它

div弹出对话框(动画效果)

2009-11-09 10:34 288 查看
JS代码

文件名称:my400800.cn.js

var menuOC=function()

{

this.menuPoint={prox:null,proy:null,proxc:null,proyc:null,width:null,height:null};

this.menuObj=document.getElementById(arguments[0]);

this.menuMask=null;

this.canMove=false;

this.getMaxWH();

if(arguments[1])

{

this.canMove=arguments[1];

}

if(document.all)

{

//为IE添加遮罩iframe,用于遮盖页面上的select

if(document.getElementsByTagName("select").length>0)

{

//寻找遮罩

var masks=document.getElementsByTagName("iframe");

for(var i=0;i<masks.length;i++)

{

if(masks[i].getAttribute("move_mask")=="move_mask")

{

this.menuMask=masks[i];

break;

}

}

if(this.menuMask==null)

{

with(this.menuObj)

{

style.zIndex=(style.zIndex||0)<2?2:style.zIndex;

}

this.menuMask=document.createElement("iframe");

with(this.menuMask)

{

setAttribute("move_mask","move_mask");

src="javascript:''";

scrolling="no";

frameBorder="0";

style.position="absolute";

style.zIndex=this.menuObj.style.zIndex-1;

var curBorder=this.menuObj.currentStyle["borderWidth"];

style.top=parseInt(this.menuObj.currentStyle["top"])+parseInt(curBorder)+"px";

style.left=parseInt(this.menuObj.currentStyle["left"])+parseInt(curBorder)+"px";

style.width=parseInt(this.menuObj.currentStyle["width"])+2*parseInt(curBorder)+"px";

style.height=parseInt(this.menuObj.currentStyle["height"])+2*parseInt(curBorder)+"px";

}

this.menuObj.parentNode.appendChild(this.menuMask);

}

}

}

};

menuOC.prototype={

getStyle:function(obj,stylename)//获取控件实际样式

{

var curVal="";

if (obj.currentStyle)

{

curVal=obj.currentStyle[stylename]

}

else

{

curVal=document.defaultView.getComputedStyle(obj, null)[stylename];

}

return curVal;

},

getMaxWH:function()//获取初始宽度高度

{

with(this.menuObj)

{

var width=getAttribute("maxwidth");

if(width==null || width=="")

{

width=parseInt(this.getStyle(this.menuObj,"width"));

setAttribute("maxwidth",width);

}

var height=getAttribute("maxheight");

if(height==null || height=="")

{

height=parseInt(this.getStyle(this.menuObj,"height"));

setAttribute("maxheight",height);

}

this.menuPoint.width=width;

this.menuPoint.height=height;

}

},

show:function()//显示

{

this.clearInterval();

this.moveInit();

with(this.menuObj.style)

{

display = "block";

width = "1px";

height = "1px";

}

if(this.menuMask!=null)

{

with(this.menuMask.style)

{

display = "block";

width = "1px";

height = "1px";

}

}

var self=this;

this.menuPoint.prox=setInterval(function(){self.openx(self.menuPoint.width,self.menuObj,self.menuMask);},10);

},

hidden:function()//关闭

{

this.clearInterval();

if(this.menuObj.style.display == "block")

{

var self=this;

this.menuPoint.proyc=setInterval(function(){self.closey(self.menuObj,self.menuMask);},10);

}

},

openx:function(x,obj,mask)//横向打开

{

var cx = parseInt(obj.style.width);

if(cx < x)

{

obj.style.width = (cx + Math.ceil((x-cx)/5)) +"px";

if(mask!=null)

{

mask.style.width=parseInt(obj.style.width)+2*parseInt(parseInt(this.getStyle(obj,"borderWidth")))+"px";

}

}

else

{

clearInterval(this.menuPoint.prox);

var self=this;

this.menuPoint.proy=setInterval(function(){self.openy(self.menuPoint.height,self.menuObj,self.menuMask);},10);

}

},

openy:function(y,obj,mask)//纵向打开

{

var cy = parseInt(obj.style.height);

if(cy < y)

{

obj.style.height = (cy + Math.ceil((y-cy)/5)) +"px";

if(mask!=null)

{

mask.style.height=parseInt(obj.style.height)+2*parseInt(parseInt(this.getStyle(obj,"borderWidth")))+"px";

}

}

else

{

clearInterval(this.menuPoint.proy);

}

},

closey:function(obj,mask)//纵向关闭

{

var cy = parseInt(obj.style.height);

if(cy > 0)

{

obj.style.height = (cy - Math.ceil(cy/5)) +"px";

if(mask!=null)

{

mask.style.height=parseInt(obj.style.height)+2*parseInt(parseInt(this.getStyle(obj,"borderWidth")))+"px";

}

}

else

{

clearInterval(this.menuPoint.proyc);

var self=this;

this.menuPoint.proxc=setInterval(function(){self.closex(self.menuObj,self.menuMask);},10);

}

},

closex:function(obj,mask)//横向关闭

{

var cx = parseInt(obj.style.width);

if(cx > 0)

{

obj.style.width = (cx - Math.ceil(cx/5)) +"px";

if(mask!=null)

{

mask.style.width=parseInt(obj.style.width)+2*parseInt(parseInt(this.getStyle(obj,"borderWidth")))+"px";

}

}

else

{

clearInterval(this.menuPoint.proxc);

obj.style.display = "none";

if(mask!=null)

{

mask.style.display=obj.style.display;

}

}

},

clearInterval:function()//取消循环

{

clearInterval(this.menuPoint.prox);

clearInterval(this.menuPoint.proy);

clearInterval(this.menuPoint.proxc);

clearInterval(this.menuPoint.proyc);

},

/*-------------------------鼠标拖动---------------------*/

moveInit:function()//初始化拖动

{

if(this.canMove)

{

//允许拖动

this.startParam={x0:0,y0:0,x1:0,y1:0};

this.moveable=false;

var self=this;

with(this.menuObj)

{

style.zIndex=(style.zIndex||0)<2?2:style.zIndex;

onmousedown=function(){self.startMove();};

}

this.cancelBubble();

}

},

cancelBubble:function()//为图层内部控件取消事件冒泡

{

var objTagName=["input","select","textarea","a","button"];

var self=this;

for(var i=0;i<objTagName.length;i++)

{

with(this.menuObj)

{

var objs=getElementsByTagName(objTagName[i]);

for(var j=0;j<objs.length;j++)

{

objs[j].onmousedown=function()

{

var evt=window.event || arguments[0];

if (evt.preventDefault)

{

evt.stopPropagation();

}

else

{

evt.cancelBubble = true;

evt.returnValue = false;

}

};

}

}

}

},

movePoint:function(px,py)//坐标点

{

this.x=px;

this.y=py;

},

getEvent:function()//获取事件对象

{

return window.event || arguments.callee.caller.caller.arguments[0];

},

getMousePoint:function(evt)//获取鼠标坐标

{

var pt=new this.movePoint(0,0);

if(document.all)

{

pt.x=evt.clientX;

pt.y=evt.clientY;

}

else

{

pt.x=evt.pageX;

pt.y=evt.pageY;

}

return pt;

},

startMove:function()//开始移动

{

if(document.all)

{

this.menuObj.setCapture();

this.menuObj.filters.alpha.opacity=50;

}

else

{

if(window.captureEvents)

{

window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

this.menuObj.style.opacity=0.5;

}

}

var evt=this.getEvent();

with(this.getMousePoint(evt))

{

this.startParam.x0=x;

this.startParam.y0=y;

}

with(this.menuObj)

{

this.startParam.x1=offsetLeft;

this.startParam.y1=offsetTop;

}

this.moveable=true;

var self=this;

if(document.all)

{

this.menuObj.onmousemove=function(){self.Moveing(self.menuMask);};

this.menuObj.onmouseup=function(){self.endMove();};

}

else

{

document.onmousemove=function(){self.Moveing();};

document.onmouseup=function(){self.endMove();};

}

},

Moveing:function()//移动中

{

if(this.moveable)

{

var tmp_left,tmp_top,evt=this.getEvent();

with(this.getMousePoint(evt))

{

tmp_left=(x+this.startParam.x1-this.startParam.x0);

tmp_top=(y+this.startParam.y1-this.startParam.y0);

}

with(this.menuObj)

{

style.left=tmp_left+"px";

style.top=tmp_top+"px";

if(arguments[0])

{

var curBorder=currentStyle["borderWidth"];

arguments[0].style.left=parseInt(style.left)+2*parseInt(curBorder)+"px";

arguments[0].style.top=parseInt(style.top)+2*parseInt(curBorder)+"px";

}

}

}

},

endMove:function()//结束移动

{

if(document.all)

{

this.menuObj.releaseCapture();

this.menuObj.filters.alpha.opacity=100;

}

else

{

if(window.releaseEvents)

{

window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);

this.menuObj.style.opacity=1;

}

document.onmousemove=null;

document.onmouseup=null;

}

this.moveable=false;

}

};

var menuOC_obj=null;

function openBox()

{

if(menuOC_obj==null)

{

menuOC_obj=new menuOC("activeBox",true);

}

menuOC_obj.show();

}

function closeBox()

{

menuOC_obj.hidden();

}

调用代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>JS打开关闭移动层动画实例 - 星辰创想</title>

<script type="text/javascript" src="http://www.my400800.cn/js/www.my400800.cn.js"></script>

<style type="text/css">

a.title_close{position:absolute; right:3px; top:3px;display:block; width:32px; height:18px; overflow:hidden; background-position:0px 0px;}

.scrollBox{

width:500px;

height:200px;

background:#EDF1F8;

border: 1px solid #849BCA;

overflow:hidden;

position:absolute;

left:200px;

top:100px;

cursor:move;

filter:alpha(opacity=100);

opacity:1;

display:none;

}

.content{

padding:10px;

}

</style>

</head>

<body>

<a href="#" onclick = "openBox();return false;">[打开层]</a>

<div id="activeBox" class="scrollBox">

<a href="#" class="title_close" onclick="closeBox();return false;" title="关闭">关闭</a>

<div class="content">移动层<form action="javascript:void(0);"><input type="text" value="aa" /><select><option>1111</option><option>2222</option><option>3333</option></select><input type="submit" name="submitBotton" value="提交" /></form>11111111111</div>

</div>

<iframe width="0px" height="0px" scrolling="no" frameborder="0" src="about:blank" />

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: