基于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 CSS操作方法集合
Oct 31 Javascript
浅谈node.js中async异步编程
Oct 22 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
JavaScript贪吃蛇小组件实例代码
Aug 20 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
vue实现文字加密功能
Sep 27 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 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
用header 发送cookie的php代码
2007/03/16 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
拉歌口号大全
2014/06/13 职场文书
任命通知范文
2015/04/21 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
《三国志》赏析
2019/08/27 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang