zoukankan      html  css  js  c++  java
  • 原创弹出层插件,支持各类型内容,支持回调函数

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <meta name="format-detection"content="telephone=no, email=no" />
        <title>原创弹出层插件,支持各类型内容,支持回调函数</title>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
        <style type="text/css">
        *{margin:0;padding:0;}
        body{font-size:16px;color:#333;}
        .ev{padding: 10px; background: #ddd; margin-bottom: 10px;}
        .viewPager{min-width:320px; max-width:720px; margin:0 auto;}
        .panelBox{position:fixed; top:45%;left:50%;width:90%;min-width:280px;max-width:720px;background:#fff; border:1px solid #eee; box-shadow:0 0 50px rgba(0,0,0,0.1);border-radius:5px;min-height:200px;}
        .panelBox .hd{height:40px; border-bottom:1px solid #ddd; line-height:40px; padding:0 10px; background:#eee}
        .panelBox .bd{padding:10px; min-height:100px;}
        .panelBox .ft{height:30px; border-top:1px solid #ddd;padding:5px 10px; background:#eee;}
        .panelBox .ft{text-align:right;}
        .panelBox .ft span{display:inline-block; width:90px;height:30px; line-height:30px; text-align:center; margin-left:15px; border-radius:5px; color:#fff; cursor:pointer;}
        .panelBox .ft .btnCallback{background:#f60;}
        .panelBox .ft .btnCancel{background:#999;}
        .bounceIn{-webkit-animation:bounceIn .2s .2s ease both;animation:bounceIn .2s .2s ease both;}
        @-webkit-keyframes bounceIn{
            0%{opacity:0;-webkit-transform:scale(.9)}
            100%{opacity:1;-webkit-transform:scale(1)}
        }
        @keyframes bounceIn{
            0%{opacity:0;transform:scale(.9)}
            100%{opacity:1;transform:scale(1)}
        }
    
        .bounceOut{-webkit-animation:bounceOut .2s ease both;animation:bounceOut .2s ease both;}
        @-webkit-keyframes bounceOut{
            0%{-webkit-transform:scale(1)}
            100%{opacity:0;-webkit-transform:scale(.9)}
        }
        @keyframes bounceOut{
            0%{-webkit-transform:scale(1)}
            100%{opacity:0;-webkit-transform:scale(.9)}
        }
        </style>
        <script type="text/javascript">
        ;(function($) {
            $.extend({
                panel :{
                    defaults :{
                        'root'          : 'body',
                        'title'         : 'title',
                        'type'          : 'txt',
                        'content'       : '',
                        'hasHd'         : true,
                        'opacity'       : 0.3,
                        'maskBackground': '#000',
                        'callback'      : function(){}
                    },
    
                    config :function(ops){
                        this.options = $.extend({},this.defaults, ops);
                    },
    
                    tmp :function(im){
                        return im.options.hasHd ? 
                            '<div id="panelBox" class="panelBox">'
                            +       '<div class="hd">'+im.options.title+'</div>'
                            +       '<div class="bd">'+im.options.content+'</div>'
                            +       '<div class="ft"><span class="btnCallback">确定</span><span class="btnCancel">取消</span></div>'
                            + '</div>' :
                            '<div id="panelBox" class="panelBox" style="'+im.options.width+'">'
                            +       '<div class="bd"></div>'
                            +       '<div class="ft"><span class="btnCallback">确定</span><span class="btnCancel">取消</span></div>'
                            + '</div>'
                    },
    
                    mask :function(im){
                        return '<div id="panelMask" class="mask" style="100%;height:100%;position:fixed;top:0;left:0;opacity:0;-webkit-transition:all .2s ease-in;transition:all .2s ease-in;background:'+im.options.maskBackground+';"></div>'
                    },
    
                    creat :function(){
                        var _this = this;
                        $(this.options.root).append(this.mask(this));
                        $(this.options.root).append(this.tmp(this));
                        this.oDialog = $('#panelBox');
                        this.oMask = $('#panelMask');
                        this.oCon = $('.bd',this.oDialog);
                        this.okBtn = $('.btnCallback',this.oDialog);
                        this.cancelBtn = $('.btnCancel',this.oDialog);
                        this.setpos();
                        switch(this.options.type){
                            case 'txt':
                                this.oCon.html(this.options.content);
                                break;
                            case 'url':
                                this.oCon.html('Loading......');
                                $.get(this.options.content,function(html){
                                    _this.oCon.html(html);
                                });
                                break;
                            case 'selecter':
                                this.oCon.html($(_this.options.content).html());
                                break;
                            case 'iframe':
                                this.oCon.html('<iframe width="100%" height="200" src="'+this.options.content+'" scrolling="auto" frameborder="0"><iframe>');
                                break;
                            default:
                                this.oCon.html(this.options.content);
                                break;
                        }
                    },
    
                    show :function(){
                        this.creat();
                        var _this = this;
                        setTimeout(function(){
                            _this.oMask.css('opacity',_this.options.opacity);
                        },10);
                        this.oDialog.addClass('bounceIn');
                        this.bindEve();
                    },
    
                    hide :function(){
                        var _this = this;
                        this.oMask.css('opacity',0);
                        this.oDialog.removeClass('bounceIn').addClass('bounceOut');
                        setTimeout(function(){
                            _this.oMask.remove();
                            _this.oDialog.remove();
                        },200);
                    },
    
                    bindEve :function(){
                        var _this = this;
                        this.oMask.bind('click',function(){
                            _this.hide();
                        });
    
                        this.okBtn.bind('click',function(){
                            _this.options.callback();
                            _this.hide();
                        });
    
                        this.cancelBtn.bind('click',function(){
                            _this.hide();
                        });
    
                        $(window).resize(function(){
                            _this.setpos();
                        })
                    },
    
                    setpos :function(){
                        var ml = parseInt(this.oDialog.width()/2),
                            mt = parseInt(this.oDialog.height()/2);
                        this.oDialog.css({'margin-left':-ml+'px','margin-top':-mt+'px'});
                    }
                },
    
                dialog:function(ops) {
                    $.panel.config(ops);
                    return $.panel.show(ops);
                }
            })
        })(jQuery);
    
        $(function(){
            //调用
            var html = '<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>';
            $('#evtag1').bind('click',function(){
                $.dialog({
                    'title'         :'测试title',
                    'type'          :'txt',
                    'content'       :html,
                    'callback'      :function(){
                        console.log('回调函数执行');
                    }
                })
            });
    
            $('#evtag2').bind('click',function(){
                $.dialog({
                    'title'         :'测试title',
                    'type'          :'selecter',
                    'content'       :'#dialogContent',
                    'callback'      :function(){
                        console.log('回调函数执行');
                    }
                })
            });
    
            $('#evtag3').bind('click',function(){
                $.dialog({
                    'title'         :'测试title',
                    'type'          :'iframe',
                    'content'       :'http://www.baidu.com/',
                    'callback'      :function(){
                        console.log('回调函数执行');
                    }
                })
            })
    
            $('#evtag4').bind('click',function(){
                $.dialog({
                    'title'         :'测试title',
                    'type'          :'url',
                    'content'       :'http://www.baidu.com/',
                    'callback'      :function(){
                        console.log('回调函数执行');
                    }
                })
            });
        })
        </script>
    </head>
    <body>
        <div class="viewPager">
            <p class="ev" id="evtag1">弹出-文本</p>
            <p class="ev" id="evtag2">弹出-选择器</p>
            <p class="ev" id="evtag3">弹出-iframe</p>
            <p class="ev" id="evtag4">弹出-url</p>
            <div id="dialogContent">选择器内容</div>
        </div>
    </body>
    </html>
  • 相关阅读:
    接口的显示实现和隐式实现
    Math.Round和四舍五入
    经典SQL语句大全(转)
    简明添加log4net到项目中
    NAnt学习笔记(3) Properties, Loggers & Listeners
    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
    Pyramid中如何配置多种URL匹配同一个View
    《IT项目管理》读书笔记(4) —— 项目范围管理
    C#语法糖
    枚举类型转换成字符串
  • 原文地址:https://www.cnblogs.com/laohuzi/p/4500746.html
Copyright © 2011-2022 走看看