基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)


Posted in Javascript onSeptember 28, 2011

原理很简单:
获取当前屏幕(窗体)的宽度和高度,因为不同浏览器的窗体大小是不一样的。有了这个,可以计算出来垂直居中的坐标。但是滑动了滚动条怎么依然垂直居中呢?这个时候就要获取当前窗体距离页面顶部的高度,加到刚刚的y轴坐标即可。
$(document)是获取整个网页的,$(window)是获取当前窗体的,这个要搞清楚。
最后把获取的坐标赋给窗体即可,窗体本身是绝对定位的,所以自然可以到窗体中间。
具体代码:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>弹出确认框始终位于窗口的中间位置的测试</title> 
<style type="text/css"> 
.mask { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #000; opacity: 0.5; filter: alpha(opacity=50); display: none; z-index: 99; } 
.mess { position: absolute; display: none; width: 250px; height: 100px; border: 1px solid #ccc; background: #ececec; text-align: center; z-index: 101; } 
</style> 
<script type="text/javascript" src="jquery-1.6.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('.btn').click(function() { 
$('.mask').css({'display': 'block'}); 
center($('.mess')); 
check($(this).parent(), $('.btn1'), $('.btn2')); 
}); 
// 居中 
function center(obj) { 
var screenWidth = $(window).width(), screenHeight = $(window).height(); //当前浏览器窗口的 宽高 
var scrolltop = $(document).scrollTop();(),//获取当前窗口距离页面顶部高度 
var objLeft = (screenWidth - obj.width())/2 ; 
var objTop = (screenHeight - obj.height())/2 + scrolltop; 
obj.css({left: objLeft + 'px', top: objTop + 'px','display': 'block'}); 
//浏览器窗口大小改变时 
$(window).resize(function() { 
screenWidth = $(window).width(); 
screenHeight = $(window).height(); 
scrolltop = $(document).scrollTop(); 
objLeft = (screenWidth - obj.width())/2 ; 
objTop = (screenHeight - obj.height())/2 + scrolltop; 
obj.css({left: objLeft + 'px', top: objTop + 'px','display': 'block'}); 
}); 
//浏览器有滚动条时的操作、 
$(window).scroll(function() { 
screenWidth = $(window).width(); 
screenHeight = $(widow).height(); 
scrolltop = $(document).scrollTop(); 
objLeft = (screenWidth - obj.width())/2 ; 
objTop = (screenHeight - obj.height())/2 + scrolltop; 
obj.css({left: objLeft + 'px', top: objTop + 'px','display': 'block'}); 
}); 
} 
//确定取消的操作 
function check(obj, obj1, obj2) { 
obj1.click(function() { 
obj.remove(); 
closed($('.mask'), $('.mess')); 
}); 
obj2.click(function() { 
closed($('.mask'), $('.mess')); 
}) ; 
} 
// 隐藏 的操作 
function closed(obj1, obj2) { 
obj1.hide(); 
obj2.hide(); 
} 
}); 
</script> 
</head> 
<body> 
<input type="button" class="btn" value="btn"/> 
<div>弹出确认框始终位于窗口的中间位置的测试</div> 
<div class="mask"></div> 
<div class="mess"> 
<p>确定要删除吗?</p> 
<p><input type="button" value="确定" class="btn1"/> 
<input type="button" value="取消"class="btn2"/></p> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
JavaScript代码里的判断小结
Aug 22 Javascript
利用Angularjs和Bootstrap前端开发案例实战
Aug 27 Javascript
全面解析vue中的数据双向绑定
May 10 Javascript
JS实现瀑布流布局
Oct 21 Javascript
JS开发常用工具函数(小结)
Jul 04 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
Element实现动态表格的示例代码
Aug 02 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
Sep 28 #Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 #Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 #Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
Sep 28 #Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 #Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 #Javascript
一个挺有意思的Javascript小问题说明
Sep 26 #Javascript
You might like
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python写一个随机点名软件的实例
2019/11/28 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
加拿大最大的书店:Indigo
2017/01/01 全球购物
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
总经理助理的职责
2014/03/14 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
端午节活动总结报告
2015/02/11 职场文书
学校就业保障协议书
2019/06/24 职场文书
导游词之潮音寺
2019/09/26 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android