基于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的抓取博客园首页RSS的代码
Dec 01 Javascript
JavaScript基础知识之数据类型
Aug 06 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
javascript中的this详解
Dec 08 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
原生js实现轮播图的示例代码
Feb 20 Javascript
完美实现js选项卡切换效果(二)
Mar 08 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 Javascript
如何阻止移动端浏览器点击图片浏览
Aug 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php获取参数的几种方法总结
2014/02/18 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
python实现C4.5决策树算法
2018/08/29 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
django框架forms组件用法实例详解
2019/12/10 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
水电维修专业推荐信
2014/09/06 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
党员承诺书范文2015
2015/04/27 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
关于远足的感想
2015/08/10 职场文书
创业计划书之水果店
2019/07/18 职场文书