两种方式解决DIV弹出窗口问题

开发 前端
要想完美实现DIV弹出层功能,这里推荐一个轻量级JavaScript工具:subModal,subModal实现用DIV模拟的模式DIV弹出窗口,非常漂亮且简单实用。

 本文向大家描述一下如何***实现DIV弹出层功能,这里有二种方式处理DIV弹出窗口,一种是用JavaScript代码,另一种是用样式,具体内容请看本文详细介绍,相信本文介绍一定会让你有所收获。

***实现DIV弹出层功能

要想***实现DIV弹出层功能,这里推荐一个轻量级JavaScript工具:subModal(包括图片和样式仅8KB左右,JavaScript文件4.27KB),subModal实现用DIV模拟的模式DIV弹出窗口,非常漂亮且简单实用。其中发表评论窗口就是DIV弹出窗口样式。

下面将介绍此JavaScript工具的使用:

在开始使用之前需要下载文件:

已经整理后的版本:subModal

原始版本(英文):http://gabrito.com/files/subModal/可以在此页面查看运行效果。页面引用相关文件。在需要DIV弹出窗口的页面上引用样式文件和Javascript文件:

viewsourceprint?

  1. 1.<linkrellinkrel="stylesheet"type="text/css"href="submodal.css"/> 
  2. 2.<scripttypescripttype="text/javascript"src="submodal.JavaScript"></script> 
  3.  

源代码中的submodal.JavaScript,submodal.css,loading.html,loading.gif,close.gif是必须文件,其他为演示实例文件。

若要改变DIV弹出窗口样式,或者改变close.gif图片路径,请编辑submodal.css
若需要改变加载效果,需编辑loading.html,现在我们就可以编写代码来DIV弹出窗口了,有二种方式处理DIV弹出窗口:

◆用JavaScript代码:

DIV弹出窗口的函数为:showPopWin(url,width,height,returnFunc),url为弹出链接,width为宽带,height为高度,returnFunc为当窗口弹出后的回调函数。其中高宽以像素为单位,例如:

<!–以下代码将会在弹出DIV弹窗,弹窗中页面为modalcontent.html,弹窗的宽度为400像素,高度为200像素–>

viewsourceprint?

  1. 1.<p><buttononclickbuttononclick=
  2. "showPopWin('modalcontent.html',400,200,null);"> 
  3. showmodalwindowbutton</button></p> 

◆用样式:

subModal支持设置特别的样式来完成DIV弹出窗口的功能。当链接上设置submodal或者submodal-width-height格式的样式后,页面运行过程中subModal将会为链接增加处理事件。当点击链接时,将在DIV弹窗中展示链接的页面,而不是新的浏览器窗口。

例如:

viewsourceprint? 

  1. 1.<p><aclassaclass="submodal"href="modalcontent.html"> 
  2. showmodalwindowusingclass</a> 
  3. 2.<!--将在DIV弹窗中显示dodalcontent.html页面--></p> 
  4. 3.  
  5. 4.<p><aclassaclass="submodal-200-400"href="modalcontent.html"> 
  6. showmodalwindowusingclassandoverridingdefaultsize</a> 
  7. 5.<!--将在DIV弹窗中显示dodalcontent.html页面,且宽带为200像素,高度为400像素--></p> 
  8.  
  9.  

 关闭弹出可以在当前页码调用hidePopWin()函数或者在弹出页面中调用window.parent.hidePopWin(),如:

viewsourceprint? 

  1. 1.<buttononclickbuttononclick="window.parent.hidePopWin()">close</button> 
  2.  

在http://www.cnblogs.com/lzppcc/archive/2008/01/14/1038977.html看到到的这个弹出框很漂亮,但不能通过鼠标拖动弹出的窗口,难免遗憾,便自己写了JavaScript代码,实现了这个功能.

subModal.JavaScript
//***********************以下为新增控件的拖曳事件*************************************************** 

  1. vargMouseMove=false;  
  2. varx,y,z  
  3. //开始拖曳  
  4. functionstartDrag(obj){  
  5. if(event.button==1||event.button==0){  
  6. x=window.event.clientX;  
  7. y=window.event.clientY;  
  8. z=obj.style.zIndex;  
  9. obj.style.zIndex=500;  
  10. obj.setCapture();//设置属于当前对象的鼠标捕捉  
  11. gMouseMove=true;  
  12. }  
  13. }  
  14. //拖动事件,obj为激发当前事件的控件,dragID为等拖曳控件的ID  
  15. varDraging=functionDraging(obj,dragID){  
  16. if(gMouseMove){  
  17. varoldwin;  
  18. if(dragID=='undefined'||dragID==''){  
  19. oldwin=obj.parentNode  
  20. }  
  21. else{  
  22. oldwin=document.getElementById(dragID);  
  23. }  
  24.  
  25. oldwin.style.left=pixParse(oldwin.style.left)+window.event.clientX-x;  
  26. oldwin.style.top=pixParse(oldwin.style.top)+window.event.clientY-y;  
  27. x=window.event.clientX;  
  28. y=window.event.clientY;  
  29. }  
  30. }  
  31. //将象素单位转为数据129px-->129  
  32. functionpixParse(str){  
  33. strstr=str.replace('px','');  
  34. returnparseInt(str);  
  35. }  
  36. //停止拖动  
  37. functionstopDrag(obj){  
  38. gMouseMove=false;  
  39. obj.style.zIndex=z;//还原Z座标  
  40. obj.releaseCapture();  
  41.  
  42. }  
  43.  

 initPopUp()方法中增加了三个事件,如下:

  1. <DIVclassDIVclass="x-window-headerx-unselectablex-window-draggable" 
  2. id="ext-gen15"style="MozUserSelect:none;  
  3. KhtmlUserSelect:none"unselectable="on" 
  4. onMousedown="startDrag(this)"onMouseup="stopDrag(this)"  
  5. onMousemove="Draging(this,\'ext-comp-1001\')"> 
  6.  

【编辑推荐】

  1. 学习笔记 剖析CSS缩写六大规则
  2. CSS样式表特点及嵌入网页的四种途径
  3. 三种方法实现CSS样式表插入
  4. CSS外边距设置属性margin用法
  5. 探究CSS高级语法中选择器分组和CSS继承用法

 

责任编辑:佚名 来源: cnblogs.com
相关推荐

2010-08-11 14:22:26

Flex弹出窗口

2010-08-13 12:54:20

Flex弹出窗口

2011-03-03 10:26:04

Pureftpd

2023-08-24 08:02:19

幂等性API请求

2009-03-04 10:38:36

Troubleshoo桌面虚拟化Xendesktop

2010-09-07 11:09:59

2010-08-30 10:09:07

JavaScriptDIV

2010-02-02 14:32:32

Python线程编程

2009-06-25 13:43:00

Buffalo AJA

2010-10-21 16:24:18

sql server升

2021-05-27 10:57:01

TCP定时器网络协议

2010-08-06 09:38:11

Flex读取XML

2009-06-23 18:18:13

SpringHibernate

2010-04-20 15:32:20

主控负载均衡

2023-03-29 13:06:36

2010-05-10 18:19:00

负载平衡技术

2011-03-23 11:22:14

oracle dbli

2010-01-08 10:52:17

Ubuntu VMwa

2010-07-14 10:30:26

Perl多线程

2010-07-27 15:03:37

Flex ArrayC
点赞
收藏

51CTO技术栈公众号