基于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 相关文章推荐
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
js 固定悬浮效果实现思路代码
Aug 02 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
Node.js开启Https的实践详解
Oct 25 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
javascript 的变量、作用域和内存问题
Apr 19 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 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 getsiteurl()函数
2009/09/05 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
js 创建书签小工具之理论
2011/02/25 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Python实现的计算器功能示例
2018/04/26 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
python opencv肤色检测的实现示例
2020/12/21 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
城管大队整治方案
2014/05/06 职场文书
安全生产承诺书范文
2014/05/22 职场文书
学校安全防火方案
2014/06/07 职场文书
科学发展观标语
2014/10/08 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android