2015-10-06 81 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>

相关问题