第一篇帖子,个人学习积累,不足之处,希望大神指出!
最近,公司让我模仿个淘宝服务写个小demo,功能都模仿出来了,只是界面很难看,所以也想把有些部分用层弹出显示,网上一搜,弹层插件确实很多,但是觉得网上的带的文件太多了,我就想引用一个脚本文件就想实现弹层,以前又没写过插件,所以想自己试着写一个,网上也查了很多资料,终于折腾出来了。话不多说,进正题!
首先,明确目的:页面引用后,弹层显示内容,弹出层的后面被遮挡。
新建一个javascript文件,取名jquery.messagebox.js。
代码:
/* *jQuery弹出层插件 1.0 *Copyright (c) 2013 zhouxiaoyun *2013-4-20 */ (function ($) { //插件名称 $.fn.messagebox = function (options) { //代码体 }; })(jQuery);
其中messagebox调用是的插件名称,options为传进来的参数。因为有的时候不想传参数,直接调用,所以就需要在里面添加默认属性了。
var defaults = { istab: false, //是否是选项卡 title: '标题', 400, //默认宽度 height: 200, //默认高度 content: '没有设置显示内容' }; //有参数时,使用参数的数据,没有时使用默认的 var opts = $.extend(defaults, options);
下面就开始主体。
//return 标识链式操作 return this.each(function () { //获取页面的div,调用的页面必须设置一个div var div = $(this); $(div).css({ "position": "absolute", "top": $(window).height() / 2 - opts.height / 2, "left": $(window).width() / 2 - opts.width / 2, "width": opts.width, "height": opts.height, "background-color": "#fff", "border": "3px solid #666", "z-index": "1002" }); //创建遮罩层 var back = $("<div id='back'></div>"); $(back).css({ "position": "absolute", "top": "0", "left": "0", "width": "100%", "height": "100%", "background-color": "black", "z-index": "1001", "-moz-opacity": "0.8", "opacity": ".50", "filter": "alpha(opacity=50)" }); $(back).fadeIn(); //显示层的上面标题部分 var top = $("<div></div>"); $(top).css({ "width": "100%", "height": "28px" }); //显示层的标题 var title = $("<span></span>"); $(title).css({ "float": "left", "margin-left": "10px", "font-size": "13px", "font-family": "Verdana", "line-height": "25px" }); $(title).text(opts.title); //加入标题 //显示层的关闭按钮 var close = $("<span id='close'></span>"); $(close).css({ "float": "right", "height": "25px", "font-size": "23px", "font-family": "黑体", "cursor": "pointer" }); $(close).text("×"); $(top).append(title).append(close); //显示的内容 var content = $("<div></div>"); $(content).css({ "width": "100%" }); $(content).append(opts.content); //加入内容 //先移除背景遮罩再添加 $("body").find("#back").remove(); //将遮罩层加入页面中 $("body").append(back); if (!opts.istab) { $(div).empty().append(top).append(content).show(600); } else { $(close).css({ "position": "absolute", "top": "3px", "right": "5px", "z-index": "1005" }); $(div).empty().append(close).append(opts.content).show(600); } //绑定关闭事件 $(div).find("#close").hover(function () { $(this).css("background-color", "red"); }, function () { $(this).css("background-color", "#fff"); }).bind("click", function () { $(div).hide(600); $(back).fadeOut(); }); });
调用方式:
<head> <title>弹层插件demo</title> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="Scripts/jquery.messagebox.js" type="text/javascript"></script> <script type="text/javascript" language="JavaScript"> $(function () { $("#show").click(function () { //默认调用方式 $("#div1").messagebox(); /* //自定义显示层属性 $("#div1").messagebox({ title: "充值记录", 500, height: 380, content: "<iframe scrolling=\"no\" frameborder=\"0\" src=\"index.html\" width=\"100%\" height=\"100%\">你的浏览器不支持框架,请升级!</iframe>" }); */ }); }); </script> </head> <body> <div id="div1"> </div> <input id="show" type="button" value="显示" /> </body> </html>
显示的效果如图:
第一次写博客,文笔不怎么好,也希望各路大神给点意见,先谢谢了!