其实这个方法是 absolute 元素居中的方法,父元素设置 position:relative,垂直居中元素设置 position:absolute,当要垂直居中时,设置 top:0;bottom:0,然后为上下 margin 设置 auto,水平居中也是同理。IE6,IE7不支持此种居中方法。
这种方法适用于原本就设置了 position 为 absolute 的元素。
---------------------------------------------------------举个栗子---------------------------------------------------------
HTML:
1 <div class="wrap">
2 <div class="container">
3 <p>我是想要垂直居中的块级元素。</p>
4 </div>
5 </div>
CSS:
1 .wrap{
2 width:200px;
3 height: 200px;
4 background:#ccc;
5 position: relative;
6 }
7 .container{
8 width: 100px;
9 height:100px;
10 background: #00ff00;
11 position:absolute;
12 right: 0;
13 left:0;
14 top:0;
15 bottom:0;
16 margin:auto;
17 }
chrome,Firefox,opera,IE8+表现如下,水平垂直居中:
---------------------------------------------------------吃完栗子---------------------------------------------------------
方法二:
父元素设置 position:relative,需要垂直居中的元素设置:
1 position:absolute;
2 top:50%;
3 height:2Hpx;
4 margin-top:Hpx;
这里 top改为 bottom,margin-top 改为 margin-bottom 效果一样,这种方法适用于原本设置了 position 为 absolute 的元素。
---------------------------------------------------------举个栗子---------------------------------------------------------
HTML:
1 <div class="wrap">
2 <div class="container">
3 <p>我是想要垂直居中的块级元素。</p>
4 </div>
5 </div>
CSS:
1 .wrap{
2 width:100px;
3 height: 200px;
4 background:#ccc;
5 position: relative;
6 }
7 .container{
8 position:absolute;
9 top:50%;
10 height:100px;
11 margin-top:-50px; /* 高度的一半 */
12 background: #00ff00;
13 }
chrome,Firefox,opera,IE6+都能够居中:
IE6 由于 3px bug表现稍微不同,不过由于这里主要讨论垂直居中,所以就不对其作过多留意。
---------------------------------------------------------吃完栗子---------------------------------------------------------
方法三:
在需要垂直居中的元素前创建浮动元素,浮动元素设置 margin-bottom 为垂直居中元素高度的一半,高度为父元素高度的一半,为了兼容IE6、IE7,还需要象征性地设置一下 width。垂直居中元素 清除浮动。但是这个方法创建了无语义的标签,还要做一些兼容性的处理。
---------------------------------------------------------举个栗子---------------------------------------------------------
HTML:
1 <div class="wrap">
2 <div class="floatdiv"></div>
3 <div class="container">
4 <p>我是想要垂直居中的块级元素。</p>
5 </div>
6 </div>
CSS:
1 .wrap{
2 width: 100px;
3 height: 200px;
4 background: #ccc;
5 }
6 .floatdiv {
7 *width: 1px;/*兼容IE6、IE7*/
8 float:left;
9 height:50%;
10 margin-bottom:-50px;
11 }
12 .container {
13 clear:both;
14 height:100px;
15 position:relative;