DIV的绝对居中

简介: 来源:http://www.cnblogs.com/damonlan/archive/2012/04/28/2473525.html 作者:浪迹天涯 很多时候,我们需要在浏览器中让一个div居中进行显示,而不会受到滚动条的影响,那怎么才能得到效果?其实,很简单,你需要理解下面这段就可以了。

来源:http://www.cnblogs.com/damonlan/archive/2012/04/28/2473525.html

作者:浪迹天涯

很多时候,我们需要在浏览器中让一个div居中进行显示,而不会受到滚动条的影响,那怎么才能得到效果?其实,很简单,你需要理解下面这段就可以了。

最前端开人郁闷的就是浏览器的兼容性问题,所以在下面的代码中通过各浏览器的特有属性,来进行判断浏览器的类型。

比如说,self.pageYOffset 如果它为true的话,那么它说明在IE9中起作用,也说明了这个属性在IE9中是独一无二的。

直接看代码:

<script type='text/javascript'>
        function myPopupRelocate() {
            var scrolledX, scrolledY;
            if (self.pageYOffset) {//IE9 起作用
                scrolledX = self.pageXOffset;
                scrolledY = self.pageYOffset;
                alert("self.pageYOffset");
            } else if (document.documentElement && document.documentElement.scrollTop) {// IE 6 ,360浏览器等起作用
                scrolledX = document.documentElement.scrollLeft; 
                scrolledY = document.documentElement.scrollTop;
                alert("document.documentElement && document.documentElement.scrollTop");
            } else if (document.body) {//Chrome... IE9 Firfox....IE 5.5起作用
                scrolledX = document.body.scrollLeft;
                scrolledY = document.body.scrollTop;
                alert("document.body");
            }
           //以上是浏览器滚动的距离
           // alert("scrolledX:" + scrolledX);
           // alert("scrolledY:" + scrolledY);

            var centerX, centerY;
            if (self.innerHeight) {
                centerX = self.innerWidth;
                centerY = self.innerHeight;
            } else if (document.documentElement && document.documentElement.clientHeight) {
                centerX = document.documentElement.clientWidth;
                centerY = document.documentElement.clientHeight;

            } else if (document.body) {
                centerX = document.body.clientWidth;
                centerY = document.body.clientHeight;
            }

            alert("centerX:" + centerX);
            alert("centerY:" + centerY);

            var leftOffset = scrolledX + (centerX - 250) / 2;
            var topOffset = scrolledY + (centerY - 200) / 2;
            document.getElementById("mypopup").style.top = topOffset + "px";
            document.getElementById("mypopup").style.left = leftOffset + "px";
        }
        function fireMyPopup() {
            myPopupRelocate();
            document.getElementById("mypopup").style.display = "block";
            //            document.body.onscroll = myPopupRelocate;
            //            window.onscroll = myPopupRelocate;
        }
    </script>

HTML Code:

<div id='mypopup' name='mypopup' style='position: absolute; width: 250px; height: 200px;
        display: none; background: #ddd; border: 1px solid #000; z-index: 100'>
        <p>
            我现在的位置是居中状态<br>
            </p>
        <input type='submit' value=' 关闭窗口! (2) ' onclick='document.getElementById("mypopup").style.display="none"'>
    </div>
    <input type='submit' value=' Fire! (2) ' onclick='fireMyPopup()'>

这就能得到在各个浏览器中绝对居中了。当然还有其他的方法,比如说 用css,也OK。

特殊情况:

如果,你不需要居中肿么办呢?很简单啊,你需要改的仅仅是下面这句话:

var leftOffset = scrolledX + (centerX - 250) / 2;
var topOffset = scrolledY + (centerY - 200) / 2;

比如说,你现在把当前的div放到top 100px,left 100px,就需要下面操作:

var leftOffset = scrolledX + 100;
var topOffset = scrolledY + 100;

 

作者:Lanny兰东才
出处:http://www.cnblogs.com/damonlan
Q Q:*********
E_mail:Damon_lan@163.com or Dongcai.lan@hp.com

本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。

 

相关文章
|
3月前
div盒子垂直居中的3种方法
div盒子垂直居中的3种方法
30 2
div盒子水平垂直居中以及表格的居中的方法
div盒子水平垂直居中以及表格的居中的方法
113 0
|
前端开发
div文字居中
div文字居中
让里面的DIV上下左右居中在外面的DIV里
让里面的DIV上下左右居中在外面的DIV里
45 0
|
前端开发
div 居中方法汇总
居中问题无论在工作还是在面试中, 都是很常见的 下面我来给大家总结几种常用的方法, 大家可根据实际情况选择 好了, 废话不多说, 先看下效果 法1 定位+偏移 (margin) html css .
1019 0
div盒子水平垂直居中方法
文章转载自:div盒子水平垂直居中的方法 - 雪明瑶 这个问题比较老,方法比较多,各有优劣,着情使用。 一、盒子没有固定的宽和高 方案1、Transforms 变形 这是最简单的方法,不仅能实现绝对居中同样的效果,也支持联合可变高度方式使用。
1806 0
|
前端开发 容器
DIV垂直居中对齐
效果图: CSS: #container{ display:table-cell; width:300px; height:300px; vertical-align:middle; bo...
965 0

热门文章

最新文章