首先,需要有一个按钮来模拟登录:

<button id="btnLogin"class="login-btn">登录</button>

然后呢,我们想通过点击这个按钮实现这样一个效果:

从上面这张图片,我们可以看到,灰色背景就是遮罩层,而浅蓝色的区域就是登陆框位置所在了。OK,下面先看一下HTML结构和css样式:

<div id="mask"></div>  //遮罩层
<div id="login"> //登陆框包裹层
<div id="loginCon"> //表单内容
<div id="close">点击关闭</div> //关闭按钮
我是登录框哟!
</div>
</div>

这里只是将HTML结构拿出来讲一下,但是下面我们是通过JS来创建它们的,所以这里只是为了方便我们理解,并不需要放在html文件里。

CSS样式:

#close{
background:url(img/close.png) no-repeat;
width:30px;
height:30px;
cursor:pointer;
position:absolute;
right:5px;
top:5px;
text-indent:-999em;
}
#mask{
background-color:#ccc;
opacity:0.7;
filter: alpha(opacity=70);
position:absolute;
left:0;
top:0;
z-index:1000;
}
#login{
position:fixed;
z-index:1001;
}
.loginCon{
position:relative;
width:670px;
height:380px;
background:lightblue;
border:3px solid #333;
text-align: center;
}

css样式中需要注意一下z-index属性,因为我们需要让遮罩层盖住除了登录框之外所有的页面内容,所以,需要确保登录框的层次最高,遮罩层次之,所以一般将这两个的z-index属性值设置为比较高的数值,但遮罩层要比登陆框少一层。然后还有一点就是遮罩层必须设置透明度,不然就太难看了,用户体验极其不好!

JS实现代码:

function dialog(){
//获取页面的高度和宽度
var sWidth=document.body.scrollWidth || document.documentElement.scrollWidth;
var sHeight=document.body.scrollHeight || document.documentElement.scrollHeight; //获取页面的可视区域高度和宽度
var wHeight=document.documentElement.clientHeight || document.body.clientHeight; //创建遮罩层
var oMask=document.createElement("div");
oMask.id="mask";
oMask.style.height=sHeight+"px";
oMask.style.width=sWidth+"px";
document.body.appendChild(oMask); //添加到body末尾 //创建登录框
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=sWidth/2-dWidth/2+"px";
oLogin.style.top=wHeight/2-dHeight/2+"px"; //获取关闭按钮
var oClose=document.getElementById("close"); //点击关闭按钮和点击登陆框以外的区域都可以关闭登陆框
oClose.onclick=oMask.onclick=function(){
document.body.removeChild(oLogin);
document.body.removeChild(oMask);
};
} window.onload=function(){
var oBtn=document.getElementById("btnLogin");
//点击登录按钮
oBtn.onclick=function(){
dialog();
} }

这种方法是通过JS在事件绑定里动态创建和移除这些标签,然后设置他们的 id 和 style 属性。

最新文章

  1. shell:遍历目录和子目录的所有文件
  2. Android开发学习---template requires a minimum SDK version of at least 7,build target API version of 14
  3. 完美解决全面屏蔽Google教程(终结者)
  4. Windows下启动,关闭Nginx命令
  5. cocos2d-x之使用plist文件初试
  6. 使用WITH AS提高性能简化嵌套SQL(转载)
  7. SchemaExport的使用
  8. AddToDate
  9. andirod
  10. jquey ajax 无刷新提交form
  11. Codeforces Round #335 (Div. 2) C. Sorting Railway Cars 连续LIS
  12. [转] C# 键盘中的按键对应的KeyValue
  13. poj2352
  14. gson使用详解
  15. Android 带你玩转实现游戏2048 其实2048只是个普通的控件(转)
  16. 你应当知道的Java牛人
  17. 宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览
  18. APACHE 服务器开启URL REWRITE模块的方法
  19. springboot +thymeleaf+myql 记录
  20. IO学习二(节点流)

热门文章

  1. Nginx系列三 内存池的设计
  2. QC ALM 11创建域、项目和用户
  3. Hadoop之中的一个:Hadoop的安装部署
  4. eclipse中将web项目部署到tomcat
  5. mysql03---触发器
  6. Ubuntu 12.10终端Terminal快捷方式调用
  7. YTU 2945: 编程:五元向量的运算
  8. Mac 下设置Android 环境变量 NDK
  9. AutoIT: ControlSetText
  10. hdu3555(数位DP dfs/递推)