jquery实现居中弹出层代码


Posted in Javascript onAugust 25, 2010
/* 
弹出窗口定位到浏览器中间 
1. show(options{ 
height:高度 
width:宽度 
speed:渐显时间 默认0 
container:包含的html内容的jquery对象 
model:是否是模态窗口,默认true,模态对话框就是在弹层下面在覆盖遮罩层,参考上篇文章Overlay实现 
}) 
2. close(speed:淡出时间 默认0) 
*/ 
Q.Panel = function() { 
var self = this; 
self._resetPosition = function() { 
self._container.css("top", self._getTop()); 
self._container.css("left", self._getLeft()); 
}; 
self._getTop = function() { 
return Q.bom.scrollY() + (Q.bom.windowHeight() - self._options.height) / 2; 
}; 
self._getLeft = function() { 
return (Q.dom.pageWidth() - self._options.width) / 2; 
}; 
self.show = function(options) { 
self._options = $.extend({ 
width: 350, 
height: 200, 
opacity: 0.5, 
model: true, 
speed: 0 
}, options || {}); 
self._container = self._options.container; 
var css = { 
'width': self._options.width, 
'height': self._options.height, 
'z-index': Q.Overlay.zindex, 
'position': 'absolute', 
'left': self._getLeft(), 
'top': self._getTop(), 
'display': 'none' 
}; 
self._container.css(css); 
if (self._options.model) { 
self._overlay = new Q.Overlay(self._options.opacity); 
self._overlay.show(); 
} 
$(window).scroll(self._resetPosition); 
$(window).resize(self._resetPosition); 
$(document.body).append(self._container); 
self._container.fadeIn(self._options.speed); 
Q.Overlay.zindex++; //没弹出一次就递增,防止多个弹层重叠 
}; 
self.close = function(speed) { 
$(window).unbind('resize', self._resetPosition); 
$(window).unbind('scroll', self._resetPosition); 
self._container.fadeOut(speed || 0, function() { 
self._container.remove(); 
if (self._options.model) { 
self._overlay.close(); 
} 
}); 
}; 
};

这里居中是通过js控制的,下面是几个用这个剧中Panel实现的通用对话框
/*弹出自定义隐藏框 
<div id="league" style="display:none"> 
<button class="close" >close</button> 
</div> 
Q.showPanel("league", function(panel, container) { 
container.find(".close").click(function() { 
panel.close(); 
} 
); 
*/ 
Q.showPanel = function(containerId, registerEventCallback) { 
var container = $("#" + containerId); 
var height = container.height(); 
var width = container.width(); 
container = container.clone(true); 
var options = { height: height, width: width, container: container }; 
var panel = new Q.Panel(); 
registerEventCallback(panel, container); 
panel.show(options); 
}; 
/*弹出窗口,从url加载窗体html片段*/ 
Q.openWindow = function(url, data, registerEventCallback) { 
$.get(url, data, function(html) { 
var panelDiv = $(html); 
panelDiv.hide(); 
$(document.body).append(panelDiv); 
var options = { height: panelDiv.height(), width: panelDiv.width(), container: panelDiv }; 
var panel = new Q.Panel(); 
registerEventCallback(panel, panelDiv); 
panel.show(options); 
}); 
} 
/*提示框,3秒后自动淡出*/ 
Q.tips = function(msg) { 
var html = '<div class="gu_layer w330">' + 
'<div class="gu_layer_main">' + 
'<h2><img class="icon_layer_corner" alt="" src="http://res.fetionpic.com/img/blank/spacer.gif">提示</h2>' + 
'<p class="gu_layer_txt">' + msg + '</p>' + 
'<div class="gu_layer_btn"></div>' + 
'</div></div>' 
var container = $(html); 
container.hide(); 
$(document.body).append(container); 
var panel = new Q.Panel(); 
panel.show({ container: container, height: container.height(), width: container.width() ,speed:500}); 
setTimeout(function() { panel.close(500); }, 3000); 
}; 
/*提示框*/ 
Q.alert = function(msg) { 
var html = '<div class="gu_layer w330">' + 
'<div class="gu_layer_main">' + 
'<h2><img class="icon_layer_corner" alt="" src="http://res.fetionpic.com/img/blank/spacer.gif"><a class="btn_tit_close" href="">关闭</a>提示</h2>' + 
'<p class="gu_layer_txt">' + msg + '</p>' + 
'<div class="gu_layer_btn"><a class="btn_org" href="">确 定</a></div>' + 
'</div></div>' 
var container = $(html); 
container.hide(); 
$(document.body).append(container); 
var panel = new Q.Panel(); 
container.find(".btn_tit_close").click(function() { 
panel.close(); 
return false; 
}); 
container.find(".btn_org").click(function() { 
panel.close(); 
return false; 
}); 
panel.show({ container: container, height: container.height(), width: container.width() }); 
}; 
/*确认框 cancel回调为可选*/ 
Q.confirm = function(title, msg, yes, cancel) { 
var html = '<div class="gu_layer w330">' + 
'<div class="gu_layer_main">' + 
'<h2><img class="icon_layer_corner" alt="" src="http://res.fetionpic.com/img/blank/spacer.gif"><a class="btn_tit_close" href="">关闭</a>' + title + '</h2>' + 
'<p class="gu_layer_txt">' + msg + '</p>' + 
'<div class="gu_layer_btn"><a class="btn_org" href="">确 定</a><a class="btn_gray" href="">取 消</a></div>' + 
'</div></div>' 
var container = $(html); 
container.hide(); 
$(document.body).append(container); 
var panel = new Q.Panel(); 
container.find(".btn_tit_close").click(function() { 
panel.close(); 
return false; 
}); 
container.find(".btn_gray").click(function() { 
if (cancel) 
cancel(); 
panel.close(); 
return false; 
}); 
container.find(".btn_org").click(function() { 
if (yes) 
yes(); 
panel.close(); 
return false; 
}); 
panel.show({ container: container, height: container.height(), width: container.width() }); 
};
Javascript 相关文章推荐
js操作checkbox遇到的问题解决
Jun 29 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
利用js动态添加删除table行的示例代码
Dec 16 Javascript
Js Jquery创建一个弹出层可加载一个页面
May 08 Javascript
jQuery 中国省市两级联动选择附图
May 14 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
基于Vue2x的图片预览插件的示例代码
May 14 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 Javascript
jquery下实现overlay遮罩层代码
Aug 25 #Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 #Javascript
javascript下string.format函数补充
Aug 24 #Javascript
javascript下利用arguments实现string.format函数
Aug 24 #Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
Aug 24 #Javascript
js null,undefined,字符串小结
Aug 21 #Javascript
javascript中的float运算精度实例分析
Aug 21 #Javascript
You might like
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php db类库进行数据库操作
2009/03/19 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
使用PHP开发留言板功能
2019/11/19 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
javascript求日期差的方法
2016/03/02 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
会计专业推荐信
2013/10/29 职场文书
一夜的工作教学反思
2014/02/08 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
绿色校园广播稿
2014/10/13 职场文书
2014年班组长工作总结
2014/11/20 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
国王的演讲观后感
2015/06/03 职场文书
张思德观后感
2015/06/09 职场文书
老人与海读书笔记
2015/06/26 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书