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 相关文章推荐
javascript学习网址备忘
May 29 Javascript
JavaScript中的this机制
Jan 30 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
Bootstrap模态框插入视频的实现代码
Jun 25 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
搭建vscode+vue环境的详细教程
Aug 31 Javascript
解决vuex刷新数据消失问题
Nov 12 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
php session应用实例 登录验证
2009/03/16 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
python中pow函数用法及功能说明
2020/12/04 Python
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
一套VC试题
2015/01/23 面试题
星空联盟C# .net笔试题
2014/12/05 面试题
五一口号
2014/06/19 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
创业计划之特色精品店
2019/08/12 职场文书