jQuery 动画弹出窗体支持多种展现方式


Posted in Javascript onApril 29, 2010

jQuery 动画弹出窗体支持多种展现方式
动画效果

从哪个对象上触发的即从该对象开始逐渐向屏幕中间移动,并逐渐展开,展开后里面的显示对象再从上到下慢慢展开。点击关闭时,先将展开的显示的对象慢慢缩回,然后再慢慢移到触发的对象上面。

说的有点绕,我自己都不明白是什么意思,说白了就是从哪儿来回哪儿去。

展现方式

第一种:string

这是最简单最明了的方式,不用多说,就是直接赋值字符串并显示出来。

第二种:ajax

这种是支持ajax的展现,就是异步获取数据并展示出来。

第三种: iframe

顾名思义就是支持嵌套iframe显示。

第四种:controls

这个名字有点不太好理解,就是将页面的某个对象展现出来。比如:document.getElementById("showName");

插件代码实现

(function($){ 
$.alerts = { 
alert : function(o,options){ 
var defaults = { 
title : '标题', 
content : '内容', 
GetType : 'string', //controls,ajax,string,iframe 
IsDrag : true, 
Url : '', 
Data : null, 
width:400, 
height:300, 
callback : function(){} 
} 
var options = $.extend(defaults,options); 
if(!$("#window")[0]) 
{ 
$.alerts._createObject(); 
} 
var position = $.alerts._getPosition(o); 
var winPosition = $.alerts._getWindowPosition(options); 
$("#windowContent").hide(); 
$("#window").css( 
{ 
width:position.w, 
height:position.h, 
top:position.t, 
left:position.l, 
zIndex:1001 
} 
); 
$("#windowBottom,#windowBottomContent").css( 
{ 
height:options.height-30 
} 
); 
$("#windowContent").css( 
{ 
height:options.height - 45, 
width:options.width - 25 
} 
); 
$("#windowTopContent").html(options.title); 
switch(options.GetType){ 
case "string": 
$("#windowContent").html(options.content); 
break; 
case "ajax": 
if(options.Url == ''){ 
alert("AjaxUrl不能为空"); 
return; 
}else{ 
$.ajax( 
{ 
type: "POST", 
url: options.Url, 
data: options.Data, 
success: function(msg){ 
$("#windowContent").html(msg); 
} 
} 
); 
} 
break; 
case "controls": 
$("#windowContent").html(options.content.innerHTML); 
break; 
case "iframe": 
$("#windowContent").empty(); 
$("<iframe>").attr( 
{ 
src : options.Url, 
width:options.width, 
height:options.height 
} 
).appendTo("#windowContent"); 
break; 
} 
$("#window").animate( 
{ 
left:winPosition.l, 
top:winPosition.t, 
height:winPosition.h, 
width:winPosition.w 
},500,function(){ 
//$("#windowContent").fadeIn('slow'); 
$("#windowContent").slideDown(600); 
if($("#middleElement_bgDiv").get().length == 0){ 
$("<div>").attr("id","middleElement_bgDiv").css( 
{ 
position:"absolute", 
left:"0px", 
top:"0px", 
width:$(window).width()+"px", 
height:Math.max($("body").height(),$(window).height())+"px", 
filter:"Alpha(Opacity=40)", 
opacity:"0.4", 
backgroundColor:"#AAAAAA", 
zIndex:"1000", 
margin:"0px", 
padding:"0px" 
} 
).appendTo("body"); 
}else{ 
$("#middleElement_bgDiv").show(); 
} 
} 
); 
$("#windowClose").one("click",function(){ 
$("#windowContent").slideUp(600,function(){ 
$("#window").animate( 
{ 
left:position.l, 
top:position.t, 
height:position.h, 
width:position.w 
},500,function(){ 
$(this).hide(); 
if($("#middleElement_bgDiv").get().length > 0){ 
$("#middleElement_bgDiv").hide(); 
} 
$("#window").css( 
{ 
left:winPosition.l, 
top:winPosition.t, 
height:winPosition.h, 
width:winPosition.w 
} 
); 
} 
); 
}) 
}); 
$("#windowTop").mousedown(function(){ 
$.alerts.Drag( 
document.getElementById("window"), 
{ 
e : event, 
Drag : options.IsDrag 
} 
); 
}); 
}, 
_createObject : function(){ 
$("<div id=\"window\">"+ 
"<div id=\"windowTop\">"+ 
"<div id=\"windowTopContent\">Window example</div>"+ 
"<img src=\"images/window_min.jpg\" id=\"windowMin\" />"+ 
"<img src=\"images/window_max.jpg\" id=\"windowMax\" />"+ 
"<img src=\"images/window_close.jpg\" id=\"windowClose\" />"+ 
"</div>"+ 
"<div id=\"windowBottom\"><div id=\"windowBottomContent\"> </div></div>"+ 
"<div id=\"windowContent\"></div>"+ 
"<img src=\"images/window_resize.gif\" id=\"windowResize\" />"+ 
"</div>").appendTo("body"); 
}, 
_getWindowPosition : function(options){ 
var wPosition = $.alerts._getPosition("#window"); 
var windowPosition = {}; 
windowPosition.t = parseInt($(window).height()/6)+parseInt($(window).scrollTop()); 
windowPosition.l = ($(window).width()+$(window).scrollLeft())/2 - options.width/2; 
windowPosition.w = options.width; 
windowPosition.h = options.height; 
return windowPosition; 
}, 
_getPosition : function(o){ 
var top = $(o).offset().top; 
var left = $(o).offset().left; 
var height = $(o).height(); 
var width = $(o).width(); 
return {t:top,l:left,h:height,w:width}; 
}, 
Drag : function(obj,options){ 
var e = options.e || window.event; 
var Drag = options.Drag; 
if(Drag == false)return; 
var x=parseInt(obj.style.left); 
var y=parseInt(obj.style.top); 
var x_=e.clientX-x; 
var y_=e.clientY-y; 
if(document.addEventListener){ 
document.addEventListener('mousemove', inFmove, true); 
document.addEventListener('mouseup', inFup, true); 
} else if(document.attachEvent){ 
document.attachEvent('onmousemove', inFmove); 
document.attachEvent('onmouseup', inFup); 
} 
inFstop(e); 
inFabort(e); 
function inFmove(e){ 
var evt; 
if(!e)e=window.event; 
obj.style.left=e.clientX-x_+'px'; 
obj.style.top=e.clientY-y_+'px'; 
inFstop(e); 
} 
function inFup(e){ 
var evt; 
if(!e)e=window.event; 
if(document.removeEventListener){ 
document.removeEventListener('mousemove', inFmove, true); 
document.removeEventListener('mouseup', inFup, true); 
} else if(document.detachEvent){ 
document.detachEvent('onmousemove', inFmove); 
document.detachEvent('onmouseup', inFup); 
} 
inFstop(e); 
} 
function inFstop(e){ 
if(e.stopPropagation) return e.stopPropagation(); 
else return e.cancelBubble=true; 
} 
function inFabort(e){ 
if(e.preventDefault) return e.preventDefault(); 
else return e.returnValue=false; 
} 
} 
} 
JAlert = function(o,json){ 
$.alerts.alert(o,json); 
}; 
})(jQuery);

调用代码
$(function(){ 
$("a").each(function(){ 
$(this).bind("click",function(){ 
JAlert(this,{ 
title : '提示窗体', 
content : $("#msg")[0].outerHTML, 
GetType : 'string', //controls,ajax,string,iframe 
IsDrag : true, 
Url : "windows.html", 
Data : null, 
width:300, 
height:200 
}); 
}); 
}); 
});

使用说明:

title: 窗体标题

content:取决于GetType属性,如果GetType='string',那么content就是要显示的内容,如果GetType='controls',那么content则为要显示的DOM对象。其它两个类型可不用填写。

GetType:展现的四种类型:string,iframe,ajax,controls

IsDrag:是否支持拖拽

Url: 同样取决于GetType属性,如果GetType='ajax',那么Url就是请求的URL地址,如果GetType='iframe',那么URL就是iframe的链接地址。其它两个类型不用填写

Data:当GetType='ajax'时,Data属性为请求的数据。

width:显示层的宽度

height:显示层的高度

HTML代码

<body> 
<a href="javascript:void(0);" id="windowOpen1">Open window</a> 
<a href="javascript:void(0);" id="windowOpen2">Open window</a> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 
<a href="javascript:void(0);" id="windowOpen3">Open window</a> 
<div id="msg" style="font-size:16px;padding-top:16px;line-height:25px;">    欢迎访问《<a href="http://3water.com" target="_blank">三水点靠木</a>》的网站,希望与大家一起探讨技术问题,共同实现各自的梦想!<br/><br/>网址:http://3water.com</div> 
</body>

打包下载地址
Javascript 相关文章推荐
Opacity.js
Jan 22 Javascript
javascript事件模型代码
Jul 01 Javascript
extjs form textfield的隐藏方法
Dec 29 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
JS函数节流和函数防抖问题分析
Dec 18 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
jQuery 工具函数学习资料
Apr 29 #Javascript
IE JS无提示关闭窗口不提示的方法
Apr 29 #Javascript
比Jquery的document.ready更快的方法
Apr 28 #Javascript
ExtJS Store的数据访问与更新问题
Apr 28 #Javascript
JS 事件绑定函数代码
Apr 28 #Javascript
javaScript checkbox 全选/反选及批量删除
Apr 28 #Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
Apr 27 #Javascript
You might like
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
python字符串str和字节数组相互转化方法
2017/03/18 Python
python计算auc指标实例
2017/07/13 Python
django 多数据库配置教程
2018/05/30 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
python logging.info在终端没输出的解决
2020/05/12 Python
python设置表格边框的具体方法
2020/07/17 Python
降低python版本的操作方法
2020/09/11 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
求职推荐信
2013/10/28 职场文书
增值税发票丢失证明
2015/06/19 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL