CSS水平垂直置中的幾種方法

來源:互聯網
上載者:User

標籤:ber   otto   圖片   身高   第一個   文檔流   ble   文字   table   

一、脫離文檔流元素的置中方法一:margin:auto法

CSS代碼:

div{      width: 400px;      height: 400px;      position: relative;      border: 1px solid #465468; } img{      position: absolute;      margin: auto;      top: 0;      left: 0;      right: 0;      bottom: 0; }

HTML代碼:

<div>   <img src="mm.jpg"></div>


當一個元素絕對位置時,它會根據第一個不是static定位的祖先元素定位,因此這裡的img根據外層div定位。

方法二:負margin法

CSS代碼:

.container{      width: 500px;      height: 400px;      border: 2px solid #379;      position: relative; } .inner{      width: 480px;      height: 380px;      background-color: #746;      position: absolute;      top: 50%;      left: 50%;      margin-top: -190px; /*height的一半*/      margin-left: -240px; /*width的一半*/ }

HTML代碼:

<div class="container">    <div class="inner"></div></div>


這裡,我們首先用top:50%和left:50%讓inner的座標原點(左上方)移動到container的中心,然後再利用負margin讓它往左位移自身寬的一半,再往上位移自身高的一半,這樣inner的中心點就跟container的中心點對齊了。

二、未脫離文檔流元素的置中方法一:table-cell法

CSS代碼:

div{    width: 300px;    height: 300px;    border: 3px solid #555;    display: table-cell;    vertical-align: middle;    text-align: center;}img{    vertical-align: middle;}

HTML代碼:

<div>    <img src="mm.jpg"></div>

div上面的vertical-align: middle是控制垂直方向上的置中的,而text-align: center是控制水平方向的。一個有趣的事實是,當我們去掉img的vertical-align: middle之後,是這樣的:

還是置中啊!真的置中嗎?
我們看到,圖片往上移了一點,在垂直方向上已經不置中了。為什嗎?我也不知道為什麼,如果你知道,可以告訴我嗎?
但是如果我們把圖片換成文字:
CSS代碼:

div{    border: 3px solid #555;    width: 300px;    height: 200px;    display: table-cell;    vertical-align: middle;    text-align: center;}span{    vertical-align: middle;}

HTML代碼:

<div>    <span>這是放在span中的文字,通過外層div設定display: table-cell以及vertical-align: middle實現垂直置中。</span></div>

當我們把span的vertical-align: middle去掉之後是這樣的:

看到差別沒?文字的行間距更小了。如果你在自己電腦上運行代碼就會發現,這幾行字是向中間靠了,而並沒有像圖片一樣往上移。我也在想辦法搞清楚這是怎麼回事,如果你知道原因,也煩請告訴我。

方法二:彈性盒子法

CSS代碼:

.container{      width: 300px;      height: 200px;      border: 3px solid #546461;      display: -webkit-flex;      display: flex;      -webkit-align-items: center;      align-items: center;      -webkit-justify-content: center;      justify-content: center; } .inner{      border: 3px solid #458761;      padding: 20px; }

HTML代碼:

<div class="container">    <div class="inner">        我在容器中水平垂直置中    </div></div>

align-items控制垂直方向的置中,justify-content控制水平方向的置中。這是CSS3的新方法,瀏覽器支援情況如下:

本文戛然而止!

 

CSS水平垂直置中的幾種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.