A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

隐隐约约

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

web开发中浏览器对象封装了诸如prompt、alert、confirm等弹出框,但是有的弹出框并不能满足开发需要,需要我们自己定义弹出框,诸如用户登陆框、消息提示框等。本文利用弹出用户登陆框示例,对这部分知识做个小结。
示例需求:点击按钮,弹出登陆窗口,且该窗口可以拖拽,弹出窗口的同时,整个页面变成灰色半透明。
效果图如下:图1是起始页面,图2是点击“点击,弹出登陆框”按钮后页面,图3是登陆框自由拖动后页面。
                                      
                            图1                        图2                       图3
分析
1.让整个页面变成灰色半透明,需要使用div对整个屏幕进行覆盖,这个div称为覆盖层。
2.点击按钮的时候,弹出登陆窗口和覆盖层,注意,登陆窗口的z-index应该最高。
3.点击关闭按钮的时候,隐藏登陆窗口和覆盖层。
4.实现登陆窗口的拖拽。(该功能在上节博文中有详细讲解)
重点关注:
①登陆窗口的position为absolute,牢记怎么让定位属性的盒子居中,这个需要用到数学知识,设置left:50%,然后给margin-left设置为盒子宽度一般的负数。以后在HTML+CSS标签博文中需要重点标记。
②盒子拖拽中,用到的事件对象的相关属性的浏览器兼容性问题。
③重点复习一下相对定位和绝对定位。
代码如下
[url=][/url]
  1 <!DOCTYPE html>  2 <html>  3     <head>  4         <meta charset="utf-8">  5         <title>自定义登陆窗口</title>  6         <style type="text/css">  7             *{  8                 margin: 0px;  9                 padding: 0px; 10             } 11             /* 弹出登陆框按钮 */ 12             #login-header{ 13                 text-align: center; 14                 height: 30px; 15                 line-height: 30px; 16             } 17             #login-header a{ 18                 font-size: 24px; 19                 text-decoration: none; 20                 color: black; 21             } 22             23             /* 登陆框主体 */ 24             .login{ 25                 position: absolute; 26                 width: 512px; 27                 height: 284px; 28                 z-index: 9999; 29                 display: none; 30                 background-color: white; 31                 /* 这里要注意绝对定位的盒子怎么在屏幕显示居中 */ 32                 left: 50%; 33                 margin-left: -256px; 34                 margin-top: 142px; 35                 border: 1px solid gray; 36             } 37             /* 登陆框标题 */ 38             .login-title{ 39                 width: 100%; 40                 height: 40px; 41                 line-height: 40px; 42                 text-align: center; 43                 margin-bottom: 20px; 44                 cursor: move; 45             } 46             .login-title span a{ 47                 text-decoration: none; 48                 border: 1px solid gray; 49                 font-size: 12px; 50                 color: black; 51                 border-radius: 20px; 52                 width: 40px; 53                 height: 40px; 54                 background-color: #fff; 55                 position: absolute; 56                 top: -20px; 57                 right: -20px; 58             } 59             60             /* 登陆表单 */ 61             .login-input{ 62                 margin: 20px 0px 30px 0px; 63             } 64             .login-input label{ 65                 float: left; 66                 height: 35px; 67                 line-height: 35px; 68                 width: 90px; 69                 padding-left: 10px; 70                 text-align: right; 71                 font-size: 14px; 72             } 73             .login-input input.list-input{ 74                 height: 35px; 75                 line-height: 35px; 76                 width: 350px; 77                 text-indent: 5px; 78             } 79             /* 登陆框登陆按钮 */ 80             .loginSubmit{ 81                 width: 260px; 82                 height: 40px; 83                 text-align: center; 84                 border: 1px solid gray; 85                 background-color: white; 86                 margin-left: 120px; 87                  88             } 89             90             /* 遮盖层 */ 91             .bg{ 92                 background-color: #000; 93                 width: 100%; 94                 height: 100%; 95                 top: 0px; 96                 position: fixed; 97                 opacity: 0.3; 98                 -webkit-opacity: 0.3; 99                 -moz-opacity: 0.3;100                 display: none;101             }102         </style>103     </head>104     <body>105         <!-- 弹出登陆框按钮 -->106         <div id="login-header">107             <a id="adminBtn" href="javascript:void(0)">点击,弹出登陆框</a>108         </div>109         110         <!-- 登陆框主体 -->111         <div id="login" class="login">112             <!-- 登陆框标题 -->113             <div id="login-title" class="login-title">114                 登陆会员  115                 <span><a id="closeBtn" href="javascript:void(0)">关闭</a></span>116             </div>117             <!-- 登陆框表单 -->118             <div id="login-form">119                 <div class="login-input">120                     <label>登录名:</label>121                     <input type="text" placeholder="请输入登录名" class="list-input"/>122                 </div>123                 124                 <div class="login-input">125                     <label>密&nbsp;&nbsp;&nbsp;码:</label>126                     <input type="password" placeholder="请输入密码" class="list-input"/>127                 </div>128             </div>129             <!-- 登陆框登陆按钮 -->130             <input type="submit"  id="loginSubmit" value="登陆会员" class="loginSubmit"/>131         </div>132         133         <!-- 遮盖层 -->134         <div id="bg" class="bg">sada</div>135         136         137         <!-- 插入JS代码 -->138         <script type="text/javascript">139             var login=document.getElementById('login');140             var bg=document.getElementById('bg');141             // 1.点击"点击,弹出登陆框",弹出登陆窗口和遮盖层142             var adminBtn=document.getElementById('adminBtn');143             adminBtn.onclick=function(){144                 login.style.display="block";145                 bg.style.display="block";146                 return false;147             }148             // 2.点击"关闭",隐藏登陆窗口和遮盖层149             var closeBtn=document.getElementById('closeBtn');150             closeBtn.onclick=function(){151                 login.style.display="none";152                 bg.style.display="none";153                 return false;154             }155             // 3.鼠标拖拽功能156             var login_title=document.getElementById('login-title');157             login_title.onmousedown=function(e){158                 e = e || window.event;159                 var x=e.pageX || e.clientX +(document.body.scrollLeft || document.documentElement.scrollLeft);160                 var y=e.pageY || e.clientY +(document.body.scrollTop || document.documentElement.scrollTop);161                 162                 var boxX=login.offsetLeft;163                 var boxY=login.offsetTop;164                 165                 var mouse_in_boxX=x-boxX;166                 var mouse_in_boxY=y-boxY;167                 168                 document.onmousemove=function(e){169                     var x=e.pageX || e.clientX +(document.body.scrollLeft || document.documentElement.scrollLeft);170                     var y=e.pageY || e.clientY +(document.body.scrollTop || document.documentElement.scrollTop);171                     172                     login.style.left=x-mouse_in_boxX+256+'px';173                     login.style.top=y-mouse_in_boxY-142+'px';174                 }175             }176             177             login_title.onmouseup = function(){178                 document.onmousemove=null;179             }180             181         </script>182     </body>183 </html>[url=][/url]









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马