实现页面弹出框
来源:互联网 发布:阿里云香港如何使用cdn 编辑:程序博客网 时间:2024/04/27 13:33
权限系统分到的任务是:分栏和页面弹出框,开始感觉这两个任务都不难,因为在jQuery的视频中讲到过,所以找到了之前自己完成的实例脑补了一下,分栏的确是比较简单的,那么就来说一下关于页面弹出框的问题吧.
开始没多想,就简单的根据实例完成了自己需要的弹出框(达到的效果:点击按钮在页面中间弹出框,并且弹出框可以根据浏览器的大小而改变位置,始终保持在页面中间显示)
html:
<!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=UTF-8" /><title>窗口显示-陈丽娜</title><link rel="stylesheet" type="text/css" href="css/window.css"><script type="text/javascript" src='js/jquery.js'></script><script type="text/javascript" src='js/window-2.js'></script></head><body> <!-- ///* <input type="button" value="左下角显示窗口" id="leftpop"/>*/--> <input type="button" value="弹窗" id="conterpop"/> </p> <div class="window" id="center"> <div class="title"> 添加模块 <img src="image/close.gif" alt="关闭" /></div><div class="content"> <table class="pageFormContent" > <tr class="dialogContent" > <td class="dialoglable">模块名称:</td> <td ><input name="md" type="text" size="30" /></td> </tr> <tr> <td class="dialoglable">所属模块:</td> <td > <select name="model" class="required combox"> <option value ="">请选择</option> </select> </td> </tr> <tr><td class="dialoglable">英文标识:</td> <td > <input name="mdId" type="text" size="30" /> </td> </tr> <tr><td class="dialoglable">排序号:</td> <td><input name="LevelId" type="text" size="30" /></td> </tr> <tr><td class="dialoglable">关联组织:</td> <td > <select name="orgName" class="required combox"> <option value ="">请选择</option> </select> </td> </tr> <tr><td class="dialoglable">所属类型:</td> <td > <select name="typeName" class="required combox"> <option value ="">请选择</option> </select> </td> </tr> <tr><td class="dialoglable">描述:</td> <td > <textarea rows="5" name="remark" style="width: 295px" ></textarea> </td> </tr> <tr class="bar"> <td colspan="2" class="dialogBar"> <input id="button" type="button" value="保存" class="dialogbutton" /> <input id="Reset1" type="reset" value="重置" class="dialogbutton"/> <input id="dialogcancel" type="submit" value="取消" class="dialogbutton"/> </td> </tr> </table></div></div><body></html>
css:
.window{background-color: #99FFCC;width:430px;margin:5px;padding:2px;/*位置绝对定位*/ position:absolute;left: 277px;top: 491px;display:none;}.content{ height:360px; background-color:#FFFFFF; border:2px solid #99FFCC; /*滚动条显示*/ overflow:auto; clear:both;} .title img{ float:right; cursor:pointer; }.title{ padding:2px; }
js:
// JavaScript Document$(document).ready(function(){//1点击按钮可以再屏幕中间显示一个窗口//2点击按钮2可以再屏幕左下角显示一个窗口//3页面加载完成后再屏幕右下角飘一个窗口,吗并且窗口慢慢淡出//点击关闭按钮,窗体关闭/*$(".title img").click(function(){$(this).parent().parent().hide("slow");});*/var centerwin=$("#center").mywin({left:"center",top:"center"});/*var leftwin=$("#left").mywin({left:"left",top:"bottom"},function(){leftwin.slideUp("slow");});*/$("#conterpop").click(function(){ //鼠标点击按钮之后,把id为center的窗口显示在页面中间 //计算位于屏幕中间的窗口的左边界和上边界的值 //浏览器可视区的宽和高,当前窗口的宽和高 //考虑滚动条的上下左右边界问题 //如何获得滚动条的边界值 centerwin.show("slow");}); });///封装插件 $.fn.mywin=function(position, hidefunc){if(position && position instanceof Object){var positionleft=position.left;var positiontop=position.top;var windowobj=$(window);var currentwin=this;var cwinwidth=this.outerWidth(true);var cwinheight=this.outerHeight(true);var left;var top;var scrollleft;var scrolltop;var browserwidth;var browserheight;//计算浏览器当前可是区域的宽和高,以及滚动条左上边界function getWinDin(){ scrollleft=$(window).scrollLeft(); scrolltop=$(window).scrollTop(); browserwidth=$(window).width(); browserheight=$(window).height();}//计算窗口真的左边界的值function calLeft(positionleft,scrollleft,browserwidth,cwinwidth){if(positionleft && typeof positionleft=="string"){if(positionleft=="center"){left=scrollleft+(browserwidth-cwinwidth)/2;}else if(positionleft=="left"){left=scrollleft;}else if(positionleft=="right"){left=scrollleft+browserwidth-cwinwidth;}}//缓存数据currentwin.data("positionleft",positionleft);}//计算窗口真实的上边界值function callTop(positiontop,scrolltop,browserheight,cwinheight){if(positiontop && typeof positiontop=="string"){if(positiontop=="center"){ top=scrolltop+(browserheight-cwinheight)/2;}else if(positiontop=="top"){top=scrolltop;}else if(positiontop=="bottom"){top=scrolltop+browserheight-cwinheight;}}//缓存数据currentwin.data("positiontop",positiontop);}//窗体位置改变function moveWin(){calLeft(currentwin.data("positionleft"),scrollleft,browserwidth,cwinwidth);callTop(currentwin.data("positiontop"),scrolltop,browserheight,cwinheight);currentwin.animate({left:left,top:top},300); }//浏览器滚动条滚动时,移动窗口的位置var scrollTimeout;$(window).scroll(function(){clearTimeout(scrollTimeout);scrollTimeout=setTimeout(function(){getWinDin();moveWin(); },300);});//浏览器大小改变时,移动窗口的位置$(window).resize(function(){getWinDin();moveWin();}); //关闭弹出框currentwin.children(".title").children("img").click(function(){ if(!hidefunc){currentwin.hide("slow");}else{hidefunc();} });getWinDin();calLeft(positionleft,scrollleft,browserwidth,cwinwidth);callTop(positiontop,scrolltop,browserheight,cwinheight);currentwin.css("left",left).css("top",top);//返回当前对象,以便于可以级联的执行其他方法return this;}}
然而这个弹出框是实现了,但是弹出框并不能跟随着鼠标的移动而移动,为了用户体验性更好,所以要求进行改变,在上面实例的基础上做修改是没办法完成的,因为已经固定弹出框是在页面中间显示了,所以查了一些其他的方法,其中一个比较简单的方法就是利用jquery ui封装好的dialog方法:
html:基本和上一个的html是一样的,只是改变一下div的类名:
<!doctype html><html lang="en"><head><meta charset="gbk" /> <title>jQuery UI Dialog - Default functionality</title> <link rel="stylesheet" href="./css/jquery-ui.css" /> <script src="./js/jquery-1.9.1.js"></script> <script src="./js/jquery-ui.js"></script> <link rel="stylesheet" href="./css/style.css" /> <script type="text/javascript"> function dialogOpen() { $(function () { $("#dialog").dialog(); }); } </script></head><body> <input type="button" id="btnAdd" value="弹窗" onClick="dialogOpen();" /><div id="dialog" title="添加模块" style="display:none"> table部分省略 </div> </body></html>
只需要引用juqery ui封装好的js和css就可以完成弹出框,然而不是很满意的地方就是这个弹出框的效果图:
标题的背景图是灰色与整个系统并不协调,所以需要改正,一种方法是去jquery ui的官网去下载皮肤,由于我的英文不是很好没有找到下载地址,看来还要好好学英语要;另一种方法就是修改jquery ui的css,在代码调试窗口查清楚标题栏的类名,在jquerycss中进行背景色的调整即可完成。
这两种实现方法一个比较原始,是自己通过js敲出来的,一个是用封装好的方法,两种方法实现的效果虽然太相同,但是也大同小异。其实第一中方法也可以封装成一个js,在以后需要的时候调用即可。
虽然都不是什么难点,但是一步一步的实现还是花费了我一段时间的,不过以后遇到这个就不用再担心了。
- 实现页面弹出框
- 调用模态实现弹出页面框
- css实现弹出框在页面居中
- EasyUI实现页面右下角弹出提示框
- 用jQuery实现页面遮罩弹出框
- JS实现页面弹出类似QQ新闻的提示框
- JS实现页面弹出类似QQ新闻的提示框
- jQuery+css+html实现页面遮罩弹出框
- 用jQuery实现页面遮罩弹出框
- 实现页面三级联动以及弹出隐藏框
- 页面弹出信息框
- 页面弹出信息框
- 页面弹出信息框
- 页面中的弹出框
- 页面弹出框
- 实现页面session验证,非法用户将弹出提示框并跳转页面
- 项目总结一:页面弹出框+表单输入与校验形式,实现添加内容到页面
- Jsp页面弹出输入对话框的实现
- VS2010. ASP.NET树控件不显示图解决方法。
- Android 中关于 【Cursor】 类的介绍
- 远程用户连接mysql授权
- Cocos2d-x简单Box2d代码示例|点击碰撞>HelloWorldScene.h<代码演示>
- Ubuntu 12.04 配置apue2环境(《unix环境高级编程》源码编译环境安装)
- 实现页面弹出框
- 7.函数
- 整合Spring与Hibernate 异常 Unable to instantiate default tuplizer
- Cocos2d-x简单Box2d代码示例|点击碰撞>HelloWorldScene.cpp<代码演示>
- java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
- ios学习临时笔记-UIViewAutoresizing
- Eclipse快捷键 最有用的快捷键
- Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/
- linux-2.6.32内核LCD驱动移植-1