当前位置: 主页 > 日志 > WEB UI >

弹出层居中定位left、top计算函数

今天遇到一个弹出层插件在IE下是垂直和水平居中的,但是在火狐下却跑位了。看了下graybox里面的定位函数,写了个通用计算函数。

 

首先这个弹出层要具有"position:absolute;"样式。通过设置left和top实现水平和垂直居中。由于浏览器的窗口宽高是动态变化的,所以需要使用js动态计算。

 

 函数源码如下:

  <script language="javascript">
  // 计算对象居中需要设置的left和top值
  // 参数:
  //	_w - 对象的宽度
  //	_h - 对象的高度
  function getLT(_w,_h)
  {
     var de = document.documentElement;
  
     // 获取当前浏览器窗口的宽度和高度
     // 兼容写法,可兼容ie,ff
     var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
     var h = (de&&de.clientHeight) || document.body.clientHeight;
  
     // 获取当前滚动条的位置
     // 兼容写法,可兼容ie,ff
     var st= (de&&de.scrollTop) || document.body.scrollTop;
  
     var topp=0;
     if(h>_h)
       topp=(st+(h - _h)/2);
     else
       topp=st;
  
     var leftp = 0;
     if(w>_w)
       leftp = ((w - _w)/2);
  
     // 左侧距,顶部距
     return [leftp,topp];
  }
  </script>

 

测试:将下列代码放入</body>之前。

 

 

<script language="javascript">
  var re = getLT(200,200);
  document.getElementById("pop_win").style.left = re[0] + 'px';
  document.getElementById("pop_win").style.top = re[1] + 'px';
</script>

[日志信息]

该日志于 2010-12-31 16:56 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “弹出层居中定位left、top计算函数” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部