弹窗的组件开发

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
*{ margin:0; padding:0;}
.login{ background:white; border:1px #000 solid; position:absolute; left:0; top:0;  z-index:2;}
.title{ height:30px; background:gray; color:white;}
.title .close{ float:right;}
#mark{ background:black; fitler:alpha(opacity=50); opacity:0.5; position:absolute; left:0; top:0; z-index:1;}
</style>
<script>

window.onload = function(){
    var aInput = document.getElementsByTagName('input');
    
    aInput[0].onclick = function(){
        
        var d1 = new Dialog();
        d1.init({   //配置参数
            iNow : 0,
            title : '登录'
        });
        
    };
    
    aInput[1].onclick = function(){
        
        var d1 = new Dialog();
        d1.init({   //配置参数
            iNow : 1,
            w : 100,
            h : 400,
            dir : 'right',
            title : '公告'
        });
        
    };
    
    aInput[2].onclick = function(){
        
        var d1 = new Dialog();
        d1.init({   //配置参数
            iNow : 2,
            mark : true
        });
        
    };
    
    
};

function Dialog(){
    
    this.oLogin = null;
    
    this.settings = {   //默认参数
        w : 300,
        h : 300,
        dir : 'center',
        title : '',
        mark : false
    };
    
}

Dialog.prototype.json = {};

Dialog.prototype.init = function( opt ){
    
    extend( this.settings , opt );
    
    
    if( this.json[opt.iNow] == undefined ){
        this.json[opt.iNow] = true;
    }
    
    
    if(this.json[opt.iNow]){
        this.create();
        this.fnClose();
        
        if(this.settings.mark){
            this.createMark();
        }
        
        this.json[opt.iNow] = false;
        
    }
    
};

Dialog.prototype.create = function(){
    
    this.oLogin = document.createElement('div');
    this.oLogin.className = 'login';
    this.oLogin.innerHTML = '<div class="title"><span>'+ this.settings.title +'</span><span class="close">X</span></div><div class="content"></div>';
    
    document.body.appendChild( this.oLogin );
    
    this.setData();
};

Dialog.prototype.setData = function(){
    
    this.oLogin.style.width = this.settings.w + 'px';
    this.oLogin.style.height = this.settings.h + 'px';
    
    if( this.settings.dir == 'center' ){
        this.oLogin.style.left =  (viewWidth() - this.oLogin.offsetWidth)/2 + 'px';
        this.oLogin.style.top =  (viewHeight() - this.oLogin.offsetHeight)/2 + 'px';
    }
    else if( this.settings.dir == 'right' ){
        this.oLogin.style.left =  (viewWidth() - this.oLogin.offsetWidth) + 'px';
        this.oLogin.style.top =  (viewHeight() - this.oLogin.offsetHeight) + 'px';
    }
    
};

Dialog.prototype.fnClose = function(){
    
    var oClose = this.oLogin.getElementsByTagName('span')[1];
    var This = this;
    
    oClose.onclick = function(){
        
        document.body.removeChild( This.oLogin );
        
        if(This.settings.mark){
            document.body.removeChild( This.oMark );
        }
        
        This.json[This.settings.iNow] = true;
        
    };
    
};

Dialog.prototype.createMark = function(){
    
    var oMark = document.createElement('div');
    oMark.id = 'mark';
    
    document.body.appendChild( oMark );
    
    this.oMark = oMark;
    
    oMark.style.width = viewWidth() + 'px';
    oMark.style.height = viewHeight() + 'px';
    
};

function extend(obj1,obj2){
    for(var attr in obj2){
        obj1[attr] = obj2[attr];
    }
}

function viewWidth(){
    return document.documentElement.clientWidth;
}
function viewHeight(){
    return document.documentElement.clientHeight;
}


</script>
</head>

<body>
<input type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">

<!--<div class="login">
    <div class="title">
        <span>标题</span><span class="close">X</span>
    </div>
    <div class="content"></div>
</div>-->
<!--<div id="mark"></div>-->
</body>
</html>

 

转载于:https://my.oschina.net/u/3147332/blog/807038

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值