基于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 相关文章推荐
Prototype使用指南之base.js
Jan 10 Javascript
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
javascript实现二分查找法实现代码
Nov 12 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
Jun 18 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
Aug 23 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
Jan 13 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
JavaScript实现单图片上传并预览功能
Sep 30 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
原生JavaScript实现购物车
Jan 10 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
python的即时标记项目练习笔记
2014/09/18 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
python散点图实例之随机漫步
2018/08/27 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python实现函数极小值
2019/07/10 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
客户代表自我评价范例
2013/09/24 职场文书
中专生学习生活的自我评价分享
2013/10/27 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
单位委托书怎么写
2014/09/21 职场文书
维稳工作情况汇报
2014/10/27 职场文书
劳模先进事迹材料
2014/12/24 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
浅谈redis整数集为什么不能降级
2021/07/25 Redis
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技