弹出层效果的制作

    弹出层,就是点击页面的某个按钮之后弹出一个覆盖原来的层,一般运用在用户登录注册上比较多。下面简单的写下实现原理:


1.首先是也面固有的状态,这里只是一个简单的例子。
<pre name="code" class="html"><span style="font-size:18px;"><body>
<div id="header">
<button id="heder-login">登录</button>
</div>
<div id="main">
<img src="img/index_banner01.jpg" />
<img src="img/index_banner01.jpg" />
</div>
<!-- 这里注释的部分实际上是需要通过JS来动态生成的部分,写在这里主要是为了写JS的时候更方便-->
<!--	 <div id="mask">
<div id="login">
<div class="loginCon"></div>
<div id="close"></div>
</div>
</div> 	   -->
</body></span>

下面是样式部分:
 
<span style="font-family: 汉仪南宫体简, 'MS Sans Serif', sans-serif; font-size: 19px; widows: auto; background-color: rgb(255, 237, 196);"></span><pre name="code" class="html"><style>
*{
margin: 0;
padding: 0;
}
#header{
width: 100%;
height: 40px;
background-color: gray;
}
#heder-login{
position: absolute;
background-color: crimson;
right: 0;
display: inline-block;
height: 40px;
width: 60px;
clear: both;
}
//下面的选择器的height和width属性都是需要用js动态设置,这里就先不设置。
#mask{
left: 0;
top: 0;
position: absolute;

background-color: #808080;
opacity: 0.85;
z-index: 1000;
}
#login{ 

position:fixed;
z-index:1001;
}
 	 .loginCon{ 
position:relative; 
width:670px;
height:380px;
background:url(img/loginBg.png) #2A2C2E center center no-repeat;
}
#close{ 
background:url(img/close.png) no-repeat; 
width:30px; 
height:30px; 
cursor:pointer; 
position:absolute; 
right:5px; 
top:15px; 

}
</style>


 
下面开始写js了 


<span style="font-size:18px;"><script>
</span><span style="font-size:24px;">function newOpen(){
//获取页面高度和宽度
var sHeight=document.body.scrollHeight;
var sWidth=document.body.scrollWidth;
//获取页面可见高度和宽度
var cHeight=document.documentElement.clientHeight;
var cWidth=document.documentElement.clientWidth;

//设置整个背景
var oMask=document.createElement("div");
oMask.id="mask";
oMask.style.width=cWidth+"px";
oMask.style.height=sHeight+"px";
document.body.appendChild(oMask);
//设置登录框
var oLogin=document.createElement("div");
oLogin.id="login";
oLogin.innerHTML="<div class='loginCon'><div id='close'></div></div>";
document.body.appendChild(oLogin);

//获取登陆框的宽和高
var dHeight=oLogin.offsetHeight;
var dWidth=oLogin.offsetWidth;
//设置登陆框的left和top
oLogin.style.left=cWidth/2-dWidth/2+"px";
oLogin.style.top=cHeight/2-dHeight/2+"px";
//点击关闭按钮
var oClose=document.getElementById("close");
//点击登陆框以外的区域也可以关闭登陆框
oClose.οnclick=oMask.οnclick=function(){
document.body.removeChild(oLogin);
document.body.removeChild(oMask);
};

}
window.οnlοad=function(){
var denglu=document.getElementById("header-login");
denglu.οnclick=function(){
newOpen();
return false;
}

}

</script>
</span>


这样一个弹出层的效果就完成了。弹出层基本全是用的绝对定位,这样方便元素确定元素的显示位置。而且由于要将登陆框显示在最上层,还要用到z-index这个属性,他是数值越高,优先级越高。还有一个就是为了将登陆框定位在屏幕中央,且不随滚动提条的滚动而变化,将它用position:fixed固定,并且它的left值和top值都是用屏幕的可视宽度和高度分别减登陆框的宽度和高度后除以2等到的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值