js-div遮罩层、div弹出层居中(遮罩层居中显示)

js-div遮罩层、div弹出层居中

转载自:http://www.blogjava.net/jimingminlovefly/articles/366989.html

思路:打开时,显示遮罩层ShowMark()和div弹出层showDiv(divObj);关闭时,隐藏遮罩层HideMark()和div弹出层closeDiv(divObj)。
一、蒙灰层
//显示蒙灰层
function ShowMark(){
     var xp_mark=document.getElementById("xp_mark");
     if(xp_mark!=null) {
         //设置DIV
         xp_mark.style.left=0+"px";
         xp_mark.style.top=0+"px";
         xp_mark.style.position="absolute";
         xp_mark.style.backgroundColor="#000";
         xp_mark.style.zIndex="1";
         if(document.all) {
            xp_mark.style.filter="alpha(opacity=50)";
            var Ie_ver=navigator["appVersion"].substr(22,1);
            if(Ie_ver==6||Ie_ver==5){hideSelectBoxes();}
         }
         else{xp_mark.style.opacity="0.5";}
         xp_mark.style.width="100%";
//       var heights=XP_getPageSize().h;
//       if(heights<600) {
//         heights=620;
//       }
//       xp_mark.style.height=heights+"px";
         xp_mark.style.height=="100%";
         xp_mark.style.display="block";
     }
     else{
     //页面添加div explainDiv,注意必须是紧跟body 内的第一个元素.否则IE6不正常.
     $("body").prepend("<div id='xp_mark' style='display:none;'></div>");
     ShowMark();//继续回调自己
     } 
             
}

//隐藏蒙灰层
function HideMark(){
    var xp_mark=document.getElementById("xp_mark");
    xp_mark.style.display="none";    
    var Ie_ver=navigator["appVersion"].substr(22,1);
    if(Ie_ver==6||Ie_ver==5){showSelectBoxes();}
}

//获取页面的高度与宽度
function XP_getPageSize(){
    var pt = {w:0,h:0}; 
    if (window.innerHeight && window.scrollMaxY){  
      pt.w = document.body.scrollWidth;
      pt.h = window.innerHeight + window.scrollMaxY;
    }
    else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
      pt.w = document.body.scrollWidth;
      pt.h = document.body.scrollHeight;
    } 
    else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
      pt.w = document.body.offsetWidth;
      pt.h = document.body.offsetHeight;
    }
    return pt;
}

//显示所有的下拉列表框
function showSelectBoxes(){
 selects = document.getElementsByTagName("select");
 for (i = 0; i != selects.length; i++) {selects[i].style.visibility = "visible"; }
}

//隐藏所有的下拉列表框
function hideSelectBoxes(){
 selects = document.getElementsByTagName("select");
 for (i = 0; i != selects.length; i++) {selects[i].style.visibility = "hidden";}
}

二、弹出显示层div
//让层居中显示-老版本

function setDivToCenter(obj) {
 obj.style.position = "absolute";
 obj.style.zIndex = "222";
 obj.style.display = "block";
 
 var d = document.documentElement, b = document.body, w = window;
 var viewPort ={ left:0, top: 0, width:0, height:0};
 viewPort.top = b.scrollTop || d.scrollTop ; 
 viewPort.left = b.scrollLeft || d.scrollLeft ; 
 viewPort.height = w.innerHeight || d.clientHeight || b.clientHeight; 
 viewPort.width = w.innerWidth || d.clientWidth || b.clientWidth; 

 obj.style.top = (viewPort.top + viewPort.height/2 - obj.offsetHeight/2) + "px";
 obj.style.left = (viewPort.left + viewPort.width/2 - obj.offsetWidth/2) + "px";
}


//让层居中显示-新版本

function showDiv(obj){//页面可以用obj == document.getElementById();
 obj = $("#tanchu");//遮罩层div
 $(obj).show().css({"zIndex":"222","position":"absolute"});
 center(obj);
 $(window).scroll(function(){
  center(obj);
 });
 $(window).resize(function(){
  center(obj);
 }); 
}

function center(obj){//页面可以用obj == document.getElementById();
   var windowWidth = document.documentElement.clientWidth;   
   var windowHeight = document.documentElement.clientHeight;   
   
   var popupHeight =$(obj).height();   
   var popupWidth =$(obj).width();    
   
   $(obj).css({
    "top": (windowHeight-popupHeight-200)/2+$(document).scrollTop()+130,   
    "left": (windowWidth-popupWidth)/2   
   });  
}

 

 //让层居中隐藏
function closeDiv(obj){
    $(obj).hide();
    $(window).unbind();
}
方法showDiv(obj)和center(obj)可以保证div遮罩层居中显示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值