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 相关文章推荐
在新窗口打开超链接的方法小结
Apr 14 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
js取模(求余数)隔行变色
May 15 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
jquery+json实现分页效果
Mar 07 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 03 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小偷相关截取函数备忘
2010/11/28 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
js实现前端图片上传即时预览功能
2017/08/02 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python之reload流程实例代码解析
2018/01/29 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
django将数组传递给前台模板的方法
2019/08/06 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
Python requests模块session代码实例
2020/04/14 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
理工类毕业自我鉴定
2014/02/20 职场文书
搞笑创意广告语
2014/03/17 职场文书
空气环保标语
2014/06/12 职场文书
公司委托书格式范文
2014/10/09 职场文书
作弊检讨书
2015/01/27 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android