CSS水平垂直居中的方法

原文連接:http://caibaojian.com/370.htmlcss

水平垂直居中,特別是使用在列表的時候常常會用到的,之前有需求的時候我也作過相似的代碼,是使用display:table-cell,mg12的博客那個相關文章的列表好像就是使用這個代碼來的,以前我也是參考他來的。今天從新整理一下,並結合前人的辛勞,總結一下以做備份。html

水平居中,若是知道元素的寬度,則可使用前端

.cell{width:300px; margin:0 auto; text-align:center;}

若是是內聯元素居中,那麼直接用text-align:centerweb

若是未知元素寬度,而且非內聯元素,那麼下面給出的幾種方案也適合你。chrome

第一種:相對定位法佈局

原理是父類浮動的同時向左left:50%,而子類則向左浮動的同時left:50%;測試

<style type="text/css">
.centerlist {position:relative;left:50%;float:left;}
.centerlist li {position:relative;right:50%; z-index:2;float:left}
</style>
<ul class="centerlist">
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
</ul>

第二種:強制內聯spa

<style type="text/css">
.centerlist_inline{text-align: center;}
.centerlist_inline li{display: inline;}
</style>
<ul class="centerlist_inline">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

侷限:塊級元素改成內聯元素,那麼高度、寬度、margin-top,margin-bottom, padding-top,padding-bottom,等都不能用。code

第三種: 使用inline-blockorm

若是看過博主以前寫的inline-block替換float可能會更清楚這個屬性的好處。

<style type="text/css">
.centerlist_inline-block{text-align: center; font-size:0; -letter-spacing:-1px;}
.centerlist_inline-block li{display: inline-block; *display: inline; *zoom:1; font-size:12px; letter-spacing:normal; word-spacing:normal;}
</style>
<ul>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

第四種:table-cell

<style type="text/css">
.centerlist_table-cell{display:table; margin:0 auto;}
.centerlist_table-cell{display:table-cell;}
</style>
<ul class="centerlist_table-cell">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

缺點是不兼容ie6,ie7

推薦使用inline-block這種水平居中的方法,既保留了塊級元素特性,並且完美兼容。就是代碼有點多。另外你還可使用表格的方式來水平居中。

說完了水平居中,下面說垂直居中。

若是元素是內聯元素,而且只有一行,則咱們能夠經過line-height來設置與其高度一樣大小,則實現了垂直居中了。

若是未知元素高度,那就要用下面方法了!

 

原文連接:http://caibaojian.com/css-vertical-middle.html

html代碼:

<div class="middle-box">
    <div class="middle-inner">
        <p><span class="suc-tip">前端開發博客,專一前端開發和web教程</span><br/><span class="suc-link">快捷入口:<a href="http://caibaojian.com">http://caibaojian.com</a></span></p>
        <p style="display:none;"><span class="suc-tip">5年的老博客,一直致力於WEB開發</span></p>
    </div>
</div>

第一種:display:table的方法

.middle-box{display: table; height: 300px;}
.middle-inner{display: table-cell; vertical-align:middle; text-align:center;}
/*
缺點:不兼容ie六、ie7.
*/

怎麼兼容呢?固然是用另一種相對定位和絕對定位的方式。

<!--[if lt IE 8]>
<style>
.middle-inner { position: absolute; top:50%;}
.middle-inner p {position: relative; top: -50%}
</style>
<![endif]-->

可使用IE的特有的條件語法,不過我習慣用ie hack來寫。下面這個的代碼實現了水平垂直多行代碼(支持一行)居中對齊。目前測試IE、chrome和Firefox均兼容。代碼以下:

.middle-box{display: table; height: 300px; border:1px solid #ff0000; width:400px; margin:0 auto; position:relative;}
.middle-inner{display: table-cell; vertical-align:middle; *position:absolute; *top:50%; *left:50%; width:100%; text-align:center;}
.middle-inner p{position:relative; *top:-50%; *left:-50%;}

遇到居中問題,這三句CSS就夠用了。

第二種方法:增長一個空白標籤

HTML代碼:

<div class="middle-box">
<p><span class="suc-tip">前端開發博客,專一前端開發和web教程</span><br/><span class="suc-link">快捷入口:<a href="http://caibaojian.com">http://caibaojian.com</a></span></p>
<i class="visible"></i>
<p style="display:none;"><span class="suc-tip">5年的老博客,一直致力於WEB開發</span></p>
</div>

CSS代碼:

.middle-box{height:300px; border: 1px solid #f00; width: 400px; margin: 0 auto; text-align: center; }
.middle-box p{vertical-align: middle; display: inline-block; *display: inline; *zoom: 1;}
.visible{height: 100%; vertical-align: middle; width: 0; display: inline-block;}
相關文章
相關標籤/搜索