基于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 相关文章推荐
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
WebPack基础知识详解
Jan 16 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
jQuery实现Select下拉列表进行状态选择功能
Mar 30 jQuery
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
jquery插件实现悬浮的菜单
Apr 24 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获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
Python多线程和队列操作实例
2015/06/21 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Django 路由控制的实现
2019/07/17 Python
python爬虫中多线程的使用详解
2019/09/23 Python
Python谱减法语音降噪实例
2019/12/18 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
实习生求职自荐信
2014/02/07 职场文书
大学课外活动总结
2014/07/09 职场文书
授权委托书
2014/07/31 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
七年级作文之游记
2019/12/11 职场文书
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技