作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 01:37:29 阅读 我要评论

动画效果   从哪个对象上触发的即从该对象开始逐渐向屏幕中间移动,并逐渐展开,展开后里面的显示对象再从上到下慢慢展开。点击关闭时,先将展开的显示的对象慢慢缩回,然后再慢慢移到触发的对象上面。   说的有点绕,我自己都不明白是什么意思,说白了就是从哪儿来回哪儿去。   展现方式     第一种: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://jb51.net" target="_blank">脚本之家</a>》的网站,希望与大家一起探讨技术问题,共同实现各自的梦想!<br/><br/>网址:http://jb51.net</div> </body> 打包下载地址

  推荐阅读

  javascript 文章截取部分无损html显示实现代码

因为是html格式的内容,直接截取内容的前多少字符显然不合适了。而如果直接去掉所有html格式然后再截取又无法达到想要的效果,再网上搜了一通之后,写下如下代码应该可以满足基本的要求了。(js写的,因为容易调试)>>>详细阅读


本文标题:jQuery 动画弹出窗体支持多种展现方式

地址:http://www.17bianji.com/kaifa2/JS/26484.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)