问题出现的场景:(废话一堆) 登陆页面,qa测试时跟美工提议居中显示,但是美工最开始布局时没做到这点。 美工姐姐最开始的布局是: banner padding-top 40px,然后设置main与banner的margin=0。 这样banner和main部分看起来是一个整体,整体距离浏览器上部分40px。 如何实现整体居中显示:如果要实现整体页面上下居中,它们俩必须得是一个整体。我便在<body>标签中加了个class,使body中的两部分真正包含在一个整体中。接下来对这个整体<body class="mainLayout">进行设置:
[code=Css width=600px].mainLayout {
position:absolute;
left:50%;
top:50%;
width:910px;
margin-top:-270px;
margin-left: -455px; /*455为整体width910的一半*/
}
[/code]
这是使用绝对定位和负margin值实现的。 left:50% 会让整个mainlayout容器从浏览器水平方向的中点开始往右显示,此时浏览器左边的一半是空的。 然后设置 margin-left为mainlayout容器的一半,设置为负值是让容器能再向左移动,也就是将整个容器从浏览器中点往左边挪动它(mainlayout容器)本身的一半。这样mainlayout容器刚好就能够左右居中显示了。 上下居中显示的原理一样:先top:50%让容器从垂直方向的中点向下显示,上面空出一半。然后再向上移动mainlayout容器的一半,使之垂直居中。 这样子的实现貌似兼容所有浏览器哦~(我自测了chrome ff ie7-10) 小结:之前大概知道这个方法,但没有弄明白原理。今天碰到了这个任务,也终于看懂了,就索性废话一堆的记录下来,为那些和我一样糊里糊涂的孩子。(*^__^*)
|