CSS布局-垂直置中問題

來源:互聯網
上載者:User

標籤:其他   ems   bsp   垂直置中   items   支援   置中   如何   css3   

在前端頁面的布局方面,很多時候需要用到垂直置中,如果父集元素或子項目的高度是固定的那麼垂直置中可以用line-height或者定位 top:50%;margin-top:- height/2 px;實現,那麼如果父元素的高度和子項目的高度都不是固定值呢?

下面就總結一下使用css進行垂直置中布局的方法及使用環境。

html 使用如下:

<div class="parent">

<div class="child"> </div>

</div>

 

1.父元素高度與子項目高度差值為固定值,對父元素使用padding使子項目置中

當父元素與子項目差值為固定值 H px 時,可以對父元素使用上下邊的padding:H/2 px;  把子項目置中。

 

.parent{  width:200px;  height:auto;  padding:50px 0;  background-color: #13B202;}.child{  width: 40px;height: 40px;  margin:0 auto;  background-color: #000;}

 

效果如下:

 

 

2. 父集高度為固定值,父集使用 line-height ,子集使用 display:inline-box ; 

對父元素使用line-height:父集的高度;

由於line-height只對行元素有效果,所以改變子項目的display屬性為inline-block,這樣,行元素即可以有行元素屬性,又能夠像塊元素一樣設定寬高。

最後對子項目設定vertical-align: middle; 使其在行高內垂直置中,這樣置中布局就實現了。

 

.parent{  width: 200px;  height: 200px;  text-align: center;  line-height: 200px;  background-color: #13B202;}.child{  display: inline-block;  width: 40px;height: 40px;  vertical-align: middle;  background-color: #000;}

效果如下:

 3.子項目高度固定,如果需要橫向置中,子項目寬度也需固定,對子集使用定位 使其置中。

當子項目 的高度固定,無論父元素高度如何變化,子項目都可以通過 top:50%; margin-top: - 子項目高度/2 px ;使其垂直置中,這種一般用於父集高度不固定,會隨著螢幕高度或者其他因素變化的情況使用,例如彈窗的垂直置中。對於水平方向的置中也一樣,使用left:50%;margin-left:-子項目寬度/2 px ;

.parent{  position: relative;  width: 100%;  height: 100%;  background-color: #13B202;}.child{  position: absolute;  left: 50%;  top: 50%;  width: 40px;  height: 40px;  margin-left: -20px;  margin-top: -20px;  background-color: #000;}

效果如下:

 

4. 父元素高度不固定,子項目高度也不固定 。

這種情況下上面列出的都不能使用,當遇到這種情況時確實很讓人頭疼,不知如何是好,那麼使用css3的 box-align 和 box-pack 進行水平置中,使用align-items進行垂直置中。

這種情況下,無論父元素和子項目寬高如何變化,子項目都能夠保持水平和垂直置中顯示。唯一不足之處就是對於不支援CSS3的瀏覽器不能使用。

.parent{    width: 200px;    height: 200px;    background-color: #13B202;    display: flex;    display: -webkit-flex;    -webkit-box-pack: center;    justify-content: center;    -webkit-box-align: center;    -ms-flex-align: center;    -webkit-align-items: center;    align-items: center;}.child{    width: 40px;    height: 40px;    background-color: #000;}

 

 效果如下:

 

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.