• 处女作:自己动手写的jQuery弹层插件


      第一篇帖子,个人学习积累,不足之处,希望大神指出!

      最近,公司让我模仿个淘宝服务写个小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>

      显示的效果如图:

      第一次写博客,文笔不怎么好,也希望各路大神给点意见,先谢谢了!

  • 相关阅读:
    s4-9 二层设备
    s4-9 二层设备
    s5-1 网络层引言
    LeetCode Factorial Trailing Zeroes (阶乘后缀零)
    UVA 658 It's not a Bug, it's a Feature! (最短路,经典)
    UVA 1151 Buy or Build (MST最小生成树,kruscal,变形)
    LeetCode Reverse Linked List (反置链表)
    LeetCode Contains Duplicate (判断重复元素)
    UVA 1395 Slim Span (最小生成树,MST,kruscal)
    割点,桥,边双连通分量,点双连通分量
  • 原文地址:https://www.cnblogs.com/zhouxiaoyun/p/3065084.html
Copyright © 2020-2023  润新知