js弹出透明背景遮罩层

 <html>
 <head>
  <script type="text/javascript">
   //创建透明遮罩层div
   var transprentHTML = document.createElement('div');
   //创建消息提示框
   var pullOperationHTML = document.createElement('div');
   //获取浏览器的宽度
   function browserWidth()
   {
    //定义初始变量,浏览器的宽度
    var winWidth = 0;
    if (window.innerWidth){
     winWidth = windows.innerWidth;
    }else if ((document.body) && (document.body.clientWidth)){
     winWidth = document.body.clientWidth;
    }
    //通过深入Document内部对body进行检测,获取窗口大小
    if (document.documentElement && document.documentElement.clientWidth)
    {
     winWidth = document.documentElement.clientWidth;
    }
    return winWidth;
   }
    
   //获取浏览器的高
   function browserHeight()
   {
    //定义初始变量,浏览器的高度
    var winHeight = 0;
    if (window.innerHeight){
     winHeight = windows.innerHeight;
    }else if ((document.body) && (document.body.clientHeight)){
     winHeight = document.body.clientHeight;
    }
    //通过深入Document内部对body进行检测,获取窗口大小
    if (document.documentElement && document.documentElement.clientHeight)
    {
    winHeight = document.documentElement.clientHeight;
    }
    return winHeight;
   }
   
   //创建一个透明遮罩层
   function transprentDiv()
   {
    transprentHTML.style.background="hotpink";//设置创建透明遮罩层Div的背景颜色
    transprentHTML.style.width=browserWidth()+"px";//设置创建透明遮罩层Div的宽度
    transprentHTML.style.height=browserHeight()+"px";//设置创建透明遮罩层Div的高度
    transprentHTML.style.position="absolute";//设置创建透明遮罩层Div的绝对位置
    transprentHTML.style.top="0px";//设置创建透明遮罩层Div据浏览器上边的边距
    transprentHTML.style.left="0px";//设置创建透明遮罩层Div据浏览器左边的边距
    transprentHTML.style.filter="Alpha(Opacity='40',FinishOpacity='90',Style='3')";//设置创建透明遮罩层Div的透明度
    transprentHTML.style.zIndex="100";//设置创建透明遮罩层Div的层次
    transprentHTML.style.display="none";//设置创建透明遮罩层初始化不显示
   }
   //创建透明层上的提示框
   function pullOperationDiv()
   {
    //pullOperationHTML.style.background="skyblue";//设置创建提示框Div的背景颜色
    pullOperationHTML.style.border="10px solid skyblue";//设置创建提示框Div的层次
    pullOperationHTML.style.width="400px";//设置创建提示框Div的宽度
    pullOperationHTML.style.height="300px";//设置创建提示框Div的高度
    pullOperationHTML.style.position="absolute";//设置创建提示框Div的绝对位置
    //设置创建提示框Div据浏览器上边的边距,(首先减去弹出层的高度,然后用剩余的高度除以2,得到提示框据浏览器上边距的距离)
    pullOperationHTML.style.top=(browserHeight()-300)/2+"px";
    //设置创建提示框Div据浏览器上边的边距,(首先减去弹出层的宽度度,然后用剩余的宽度度除以2,得到提示框据浏览器左边距的距离)
    pullOperationHTML.style.left=(browserWidth()-400)/2+"px";
    pullOperationHTML.style.zIndex="101";//设置创建提示框Div的层次
    pullOperationHTML.style.display="none";//设置创建提示框初始化不显示
    //调用提示消息内容
    pullHeadMsg();
    //调用鼠标拖放事件
    pullOperationDivMove(pullOperationHTML);
   }
   //给提示框添加内容
   function pullHeadMsg()
   {
    pullOperationHTML.innerHTML="<div id='headDiv' style='width:100%;height:8%;background-color:gray;'>"+
            "<div style='width:90%;height:100%;float:left;font-size:25px;font-weight:bold;color:#0000dd;cursor:move;'><em>温馨提示</em></div>"+
            "<div style='width:10%;height:100%;'><input type='image' src='' οnclick='pullHeadMsgButton(0);'></div>"+
           "</div>"+
           "<div id='bodyDiv' style='width:100%;height:82%;background-color:lime;'></div>"+
           "<div id='footDiv' style='width:100%;height:10%;background-color:skyblue;text-align:right;'>"+
            "<label><input type='button' id='okButton' value='确定' οnclick='pullHeadMsgButton(1);'/></label>&nbsp;&nbsp;"+
            "<label><input type='button' id='cansleButton' value='取消' οnclick='pullHeadMsgButton(0);'/></label>"+
           "</div>";
   }
   function pullOperationDivMove(moveId){
   //鼠标拖动div的事件,e和event是事件对象
    moveId.οnmοusedοwn=function(e){
     
     e = e || window.event;
     var x= e.layerX || e.offsetX; //兼容IE和火狐
     var y= e.layerY || e.offsetY; //兼容IE和火狐
     //设置捕获范围
     //该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入
     //setCapture 的意思就是设置一个对象的方法被触发的范围,或者作用域
     if(moveId.setCapture){
      moveId.setCapture();
     }else if(window.captureEvents){
      window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP); //鼠标的一处或被点下
     }
     //鼠标移动事件
     document.οnmοusemοve=function(e){
      e= e || window.event;
      if(!e.pageX)e.pageX=e.clientX;
      if(!e.pageY)e.pageY=e.clientY;
      var tx=e.pageX-x;
      var ty=e.pageY-y;
      moveId.style.left=tx;
      moveId.style.top=ty;
     };
     //onmouseup鼠标左键释放
     document.οnmοuseup=function(){
     //取消捕获范围
      if(moveId.releaseCapture){
       moveId.releaseCapture(); //重新设置该div被触发的范围
      }else if(window.captureEvents){
       window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
      }
      //鼠标左键释放之后,清除事件
      document.οnmοusemοve=null;
      document.οnmοuseup=null;
     };
    };
   }
  
   
   //透明层,和弹出框的显示
   function transprentDivDisplay()
   {
    if(transprentHTML.style.display=='none')
    {
     transprentHTML.style.display='block';
     pullOperationHTML.style.display='block';
    }
    
   }
   //点击提示框,确定和取消按钮触发事件
   function pullHeadMsgButton(bool)
   {
    //判断透明遮罩层,消息提示框,是否处在显示状态,如果是,则关闭
    if(transprentHTML.style.display=='block'){
     transprentHTML.style.display='none';
     pullOperationHTML.style.display='none';
     //判断用户点击提示框上面的那个按钮,1代表确定,0代表取消
     if(bool==1){
      return true;
     }else{
      return false;
     }
    }
   }
   
   //显示透明遮罩层
   function showTransprentDiv()
   { 
    //调用创建的透明层
    transprentDiv();
    //调用透明层上的提示框
    pullOperationDiv();
    var bodyObject = document.body;//获取body对象
    
    bodyObject.insertBefore(transprentHTML,bodyObject.lastChild);
    //动态的将创建的提示框插入到body中,
    bodyObject.insertBefore(pullOperationHTML,bodyObject.lastChild);
    //透明层,和弹出框的显示和隐藏
    transprentDivDisplay();
    
   }
  </script>
 </head>
 <body>
  
  <div style="width:500px;height:500px;margin-left:400px;">
   <h1>第一步:页面加载时,js创建透明遮罩层"transprentHTML"和消息提示框"pullOperationHTML"</h1>
   <h1>第二步:调用showTransprentDiv()此方法,给第一步创建的两个div分别添加样式并控制层次,这时,透明遮罩层的宽高是获取浏览器的宽高</h1>
   <h1>第三步:消息提示框可以任意拖动,具体步骤代码中有详细注释</h1>
   <input type="button" value="弹出遮罩层" οnclick="showTransprentDiv()"/>
  </div>
 </body>
</html>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值