基于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 相关文章推荐
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
js实现鼠标经过表格行变色的方法
May 12 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
原生js中ajax访问的实例详解
Sep 19 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
vue组件之间数据传递的方法实例分析
Feb 12 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
JavaScript实现显示和隐藏图片
Apr 29 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 获取当前访问的url文件名的方法小结
2010/02/08 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php文件上传类完整实例
2016/05/14 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP时间函数使用详解
2019/03/21 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
微信小程序实现登录注册功能
2020/12/29 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
采购部部门职责
2013/12/15 职场文书
房屋转让协议书范本
2014/04/11 职场文书
车间安全生产标语
2014/06/06 职场文书
求职信的正确写法
2014/07/10 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2014年转正工作总结
2014/11/08 职场文书
2014年维稳工作总结
2014/11/18 职场文书
小学英语教学随笔
2015/08/14 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python