基于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 中的事件教程
Apr 05 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
JavaScript利用append添加元素报错的解决方法
Jul 01 Javascript
jquery操作checkbox示例分享
Jul 21 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
深入浅析JS中的严格模式
Jun 04 Javascript
layDate插件设置开始和结束时间
Nov 15 Javascript
Jquery Datatables的使用详解
Jan 30 jQuery
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 ci框架验证码实例分析
2013/06/26 PHP
php创建session的方法实例详解
2015/01/27 PHP
PHP递归算法的简单实例
2019/02/28 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
深入了解python中元类的相关知识
2019/08/29 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
工伤事故赔偿协议书范文
2014/09/24 职场文书
何玥事迹观后感
2015/06/16 职场文书
《牧场之国》教学反思
2016/02/22 职场文书