基于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 相关文章推荐
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
javascript与asp.net(c#)互相调用方法
Dec 13 Javascript
js 利用className得到对象的实现代码
Nov 15 Javascript
javascript的内存管理详解
Aug 07 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
jQuery动画特效实例教程
Aug 29 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
Dec 12 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
Vue 动态组件components和v-once指令的实现
Aug 30 Javascript
Element InputNumber 计数器的实现示例
Aug 03 Javascript
在JavaScript中如何使用宏详解
May 06 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数组实例总结与说明
2011/08/23 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
应届生求职推荐信
2013/10/28 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
全运会口号
2014/06/20 职场文书
演讲稿开场白台词
2014/08/25 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
投标邀请书范本
2015/02/02 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
卖车协议书范文
2016/03/23 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python