2015-10-06 37 views
1

我想要在頁面中水平居中對齊div。該div包含多個html內容,如圖像,鏈接,文本等。如何對齊沒有顯式大小居中的div?

爲了它,我不能使用display:table,它將div對齊在中心。我怎麼才能對齊內容,而不必給出明確的width

+0

是你只想水平對齊或垂直的人所以? 如果這兩個* Flex *將爲你做的伎倆。 – vivekkupadhyay

+0

只能水平。 – membersound

回答

1

使用或不使用柔性,翻譯或絕對定位:

#container { 
 
    text-align:center; 
 
} 
 

 
#center { 
 
    padding:20px; 
 
    display:inline-block; 
 
    background:#ccc; 
 
}
<div id="container"> 
 
    <div id="center"> 
 
     this is a test 
 
    </div> 
 
</div>

+0

非常棒,因爲這也適用於舊版瀏覽器。 – membersound

2

您需要在彈性盒佈局中使用justify-content: center。無需設置寬度。

.center { 
 
    display: flex; 
 
    justify-content: center; 
 
}
<div class="center"> 
 
    <img src="http://placehold.it/300x300"> 
 
    <span class="text">Test text</span> 
 
    <a href="#">Test link</a> 
 
</div>

+0

這個工作在大多數瀏覽器中嗎? – membersound

+0

*大多數瀏覽器?*是!由於它支持IE10:http://caniuse.com/#search=flexbox –

+0

小心兼容性,IE10支持部分支持,帶-ms前綴和舊版本的語法 –

0

您可以水平和垂直方向(你喜歡)與中間部位那麼容易,不知道寬度或高度:

<div class="parent"> 
    <div class="center"> 
    Centered 
    </div> 
</div> 

CSS

.parent { 
     position: relative; 
} 
.center { 
     position: absolute; 
     left:50%; 
     transform: translateX(-50%); 
     -webkit-transform: translateX(-50%); 
    } 

垂直居中使用translateY()

段:

 .parent { 
 
      position: relative; 
 
      width: 100%; 
 
      height: 500px; 
 
     border: 1px solid black; 
 
    } 
 
    .center { 
 
      height: 240px; 
 
      position: absolute; 
 
      left:50%; 
 
      top: 50%; 
 
      transform: translate(-50%, -50%); 
 
      -webkit-transform: translate(-50%, -50%); 
 
     }
 <div class="parent"> 
 
     <div class="center"> 
 
     Centered 
 
     </div> 
 
    </div>