zoukankan      html  css  js  c++  java
  • Javascript知识汇总------面向对象手写弹窗插件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>弹窗组件</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            button {
                margin: 10px;
            }
            .myAlert {
                position: absolute;
                border: 1px solid #ccc;
                z-index: 2;
                background: #fff;
            }
            .title {
                background: blue;
                color: #fff;
                padding: 10px;
                overflow: hidden;
            }
            .title .close {
                float: right;
                border: 2px silid #000;
                cursor: pointer;
            }
            .myAlert .content {
                padding: 10px;
            }
            #mark {
                position: absolute;
                background: rgba(0,0,0,.5);
                z-index: 1;
                top: 0;
                left: 0;
            }
        </style>
    </head>
    <body>
        <button id="btn1">居中弹窗</button>
        <button id="btn2">右下角弹窗</button>
        <button id="btn3">遮罩弹窗</button>
        <div id="mark"></div>
        <!-- <div class="myAlert">
            <div class="title"><span>我是标题</span><span class="close">X</span></div>
            <div class="content">我是内容我是内容我是内容我是内容我是内容</div>
        </div> -->
    </body>
    <script>
        (function (global){
            function MyAlert(json){
                this.setting = {
                    ele : this,
                     300,
                    height: 400,
                    closeBtn : true,
                    content : '我是内容',
                    title: '默认',
                    dir : 'center'
                };
                extend(this.setting,json);
                this.alertEle = null;
                this.init();
            }
            MyAlert.prototype.blog = {};
            MyAlert.prototype.init  = function (){
                this.blog[this.setting.iNow] == undefined ? this.blog[this.setting.iNow] = true:null;
                if( this.blog[this.setting.iNow] ){
                    this.creatAlert();
                    this.setting.closeBtn ? this.closeFn() : null;
                    if(this.setting.mark){
                        this.setMark();
                    }
                    this.blog[this.setting.iNow] = false;
                }
            };
            MyAlert.prototype.creatAlert = function (){
                this.alertEle = document.createElement('div'),
                    alertEleHtml = '';
                this.alertEle.className = 'myAlert';
    
                alertEleHtml += '<div class="title">'
                alertEleHtml += '<span>'+ this.setting.title +'</span><span class="close">X</span>';
                alertEleHtml += '</div><div class="content">'+this.setting.content+'</div>';
                this.alertEle.innerHTML += alertEleHtml
                document.body.appendChild(this.alertEle);
                this.setdata();
            };
            MyAlert.prototype.setdata = function (){
                this.alertEle.style.width = this.setting.width + 'px';
                this.alertEle.style.height = this.setting.height + 'px';
                switch (this.setting.dir){
                    case 'center':
                        this.alertEle.style.left = (document.documentElement.clientWidth - this.setting.width)/2 + 'px';
                        this.alertEle.style.top = (document.documentElement.clientHeight - this.setting.height)/2 + 'px';
                    break;
                    case 'right':
                        this.alertEle.style.right = 0 + 'px';
                        this.alertEle.style.bottom = 0 + 'px';
                    break;
                }
            }
            MyAlert.prototype.closeFn = function (){
                var This = this;
                this.alertEle.getElementsByClassName('close')[0].onclick = function (){
                    document.body.removeChild(This.alertEle);
                    if(This.markEle){
                        document.body.removeChild(This.markEle);
                    }
                    This.blog[This.setting.iNow] = true;
                }
            };
            MyAlert.prototype.setMark = function (){
                this.markEle = document.createElement(this.markEle);
                var markEle = document.body.appendChild(this.markEle);
                markEle.id = 'mark';
                markEle.style.width = document.documentElement.clientWidth + 'px';
                markEle.style.height = document.documentElement.clientHeight + 'px';
            }
            function extend(obj1,obj2){
                for(var attr in obj2){
                    obj1[attr] = obj2[attr];
                }
            }
            global.MyAlert = MyAlert;
        })(this)
    </script>
    <script>
        var aBtn = document.getElementsByTagName('button');
        aBtn[0].onclick = function (){
            var alert1 = new MyAlert({
                ele : this,
                 300,
                height: 400,
                closeBtn : true,
                content : '我是内容,哈哈哈哈哈',
                title: '登陆',
                dir : 'center',
                iNow : 0
            });  
        }
        aBtn[1].onclick = function (){
            var alert1 = new MyAlert({
                ele : this,
                 200,
                height: 100,
                closeBtn : true,
                content : '公告内容',
                title: '公告',
                dir : 'right',
                iNow : 1
            });  
        }
        aBtn[2].onclick = function (){
            var alert1 = new MyAlert({
                ele : this,
                 300,
                height: 400,
                closeBtn : true,
                content : '遮罩',
                title: '公告',
                dir : 'right',
                iNow : 2,
                mark : true
            });  
        }
    </script>
    </html>
     
  • 相关阅读:
    QT::目录/文件
    QT::标题栏/目录/托盘/工具条/状态栏
    QT::布局
    PHP 发送http请求
    php 图片缩放然后合成并保存
    PHP 打开已有图片进行编辑
    一些实用的方法整理(与语言无关)
    PHP 与pdf文档 与条码
    Excel导入遇到的问题An object with the same key already exists in the ObjectStateManager……
    【随笔】Apache降权和禁用PHP危险函数
  • 原文地址:https://www.cnblogs.com/iwzyuan/p/8758832.html
Copyright © 2011-2022 走看看