层在浏览器中上下左右居中,并适应不同分辨率

由于工作需要,要求一个层在浏览器中上下左右居中,并适应不同分辨率.

刚开始时想到小菜一碟,只在相对绝对一出,搞定.

接着进入实践阶段,才发现并不是如此.

XML/HTML代码
  1. <style type="text/css">  
  2. <!--    
  3. * {margin:0;padding:0}   
  4. div {   
  5.     width:500px;   
  6.     height:500px;   
  7.     border:1px solid #ccc;   
  8.     overflow:hidden;   
  9.     position:relative;   
  10.     display:table-cell;   
  11.     text-align:center;   
  12.     vertical-align:middle   
  13.     }   
  14. div p {   
  15.     position:static;   
  16.     +position:absolute;   
  17.     top:50%   
  18.     }   
  19. img {   
  20.     position:static;   
  21.     +position:relative;   
  22.     top:-50%;left:-50%;   
  23.     width:276px;   
  24.     height:110px   
  25.     }   
  26. -->  
  27. </style>  
  28. <div><p><img src="http://www.google.com/intl/en/images/logo.gif" /></p></div>  

正如上面的代码一样,只能在有 高度 的情况下才有作用.否则一切免谈.

于是,决定使用JS.

思路->获取浏览器窗口的可视区域大小->获取层的宽高->两者相减则得到的数值则为定位中top与left的值->给值->完成.

XML/HTML代码
  1. <script type="text/javascript">  
  2. function aidesi(){   
  3.     var winWidth = document.documentElement.clientWidth;   
  4.     var winHeight =document.documentElement.clientHeight;   
  5.     var aide = document.getElementById("aide");   
  6.     var aideimg = document.getElementById("aideimg");   
  7.     aide.style.top= (winHeight-aideimg.height)/2+"px";   
  8.     aide.style.left= (winWidth-aideimg.width)/2+"px";   
  9. }   
  10. </script>  
  11. <style>  
  12. #aide{z-index:1;position:absolute;}   
  13. </style>  
  14.   
  15.   
  16. <div id="aide" style="">  
  17. <img id="aideimg" src="http://www.google.com/intl/en/images/logo.gif" alt="" onload="aidesi()" />  
  18. </div>  

在这个过程中,发生了一件令我深思的事件.就是不清楚为什么FF一直获取不到winWidth与winHeight,最后请教Franky,得到的结果是正常,大体还可以优化.

于是我再折腾FF.最后还是花随提醒,是不是由于FF禁用了JS的原因才造成取值不成功.

检查,才发现真不知道自己的本本里FF如时禁用了JS.时间就这样过去了.

得到:小细节要注意.

最后放出 demo

Tags: 居中, web标准

« 上一篇 | 下一篇 »

发表评论

注:网址请加上 http:// 若无,报错...

评论内容 (必填):