基于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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
Jun 19 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
js禁止document element对象选中文本实现代码
Mar 21 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
Jun 04 Javascript
vue中各组件之间传递数据的方法示例
Jul 27 Javascript
angularjs实现的购物金额计算工具示例
May 08 Javascript
小程序实现左右来回滚动字幕效果
Dec 28 Javascript
js实现图片上传到服务器和回显
Jan 19 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脚本中include文件出错解决方法
2008/11/20 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
javascript英文日期(有时间)选择器
2007/05/02 Javascript
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
Python装饰器用法实例分析
2019/01/14 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
巴西女装购物网站:Eclectic
2018/04/24 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
工商治理实习生的自我评价分享
2014/02/20 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技