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 相关文章推荐
jQuery.holdReady()方法用法实例
Dec 27 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
Javascript获取统一管理的提示语(message)
Feb 03 Javascript
jQuery文件上传控件 Uploadify 详解
Jun 20 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
JavaScript函数的4种调用方法实例分析
Mar 05 Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 Javascript
小程序实现订单倒计时功能
Apr 23 Javascript
微信打开网址添加在浏览器中打开提示的办法
May 20 Javascript
Javascript call及apply应用场景及实例
Aug 26 Javascript
JavaScript动态生成表格的示例
Nov 02 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
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编程效率的53个要点(经验小结)
2010/09/04 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
基于php无限分类的深入理解
2013/06/02 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
php生成HTML文件的类方法
2019/10/11 PHP
php接口隔离原则实例分析
2019/11/11 PHP
扩展String功能方法
2006/09/22 Javascript
获取Javscript执行函数名称的方法
2006/12/22 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
Python实现控制台进度条功能
2016/01/04 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Sanic框架应用部署方法详解
2018/07/18 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python如何爬取动态网站
2020/09/09 Python
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
教师工作态度自我评价
2015/03/05 职场文书
关于车尾的标语大全
2015/08/11 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
为什么不建议在go项目中使用init()
2021/04/12 Golang