Центрировать несколько div в другом div? - PullRequest
40 голосов
/ 20 августа 2009

У меня есть четыре элемента div, содержащихся в другом элементе div, и я хочу, чтобы четыре внутренних элемента div были центрированы.

Я использовал float: left для четырех делений, чтобы они были выровнены по горизонтали.

CSS:

<style>
    .square  //inner divs
    {
        float: left;
        margin:1pt;
        width:72pt;
        height:72pt;
    }
    .container //outer divs
    {
        text-align:center;
        width:450pt;
        height: 80pt;
    }
</style>

и HTML:

<div class = "container">
    <div class = "square">...</div>
    <div class = "square">...</div>
    <div class = "square">...</div>
    <div class = "square">...</div>
</div>

Как я могу центрировать div внутри контейнера?

Число внутренних элементов может быть переменным.

Ответы [ 6 ]

41 голосов
/ 06 сентября 2013

Поскольку вы не знаете, сколько у вас есть делений, вы должны использовать

text-align:center на внешнем div

display:inline-block затем внутренний div

http://jsfiddle.net/edi9999/yv2WY/

HTML

<div class = "container">
    <div class = "square">John</div>
    <div class = "square">Mary</div>
    <div class = "square">Doe</div>
    <div class = "square">Jane</div>
</div>

CSS

.square
{
    margin:1px;
    width:20%;
    text-align:left;
    border: 1px solid gray;
    display:inline-block;    
}
.container
{
    text-align:center;
    width:100%;
    height: 80pt;
    border: 1px solid black;
}
22 голосов
/ 20 августа 2009

Вот альтернативный метод, если вы можете использовать дополнительный div:

<div class = "container">
  <div class="centerwrapper">
    <div class = "square">...</div>
    <div class = "square">...</div>
    <div class = "square">...</div>
    <div class = "square">...</div>
  </div>
</div>

<style>
    .square
    {
        float: left;
        margin:1pt;
        width:72pt;
        height:72pt;
    }
    .container
    {
        text-align:center;
        width:450pt;
        height: 80pt;
    }
    .centerwrapper
    {
       margin: auto;
       width: 302pt;
    }
</style>

Кроме того, убедитесь, что у вас есть заключительная цитата на вашем <div class = "container">. В вставленном вами коде отсутствует один.

7 голосов
/ 05 марта 2011

Как говорит #RwL, работает <span>, вот пример кода, протестированный на IE6 / 8, Chrome, Safari, Firefox:

CSS

<style type="text/css">
    /* borders and width are optional, just added to improve visualization */
    .parent
    {
        text-align:center;
        display: block;
        border: 1px solid red;
    }
    .child
    {
        display: inline-block;
        border: 1px solid black;
        width: 100px;
    }
</style>

HTML

<span class="parent">
    <span class="child">
        A
    </span>
    <span class="child">
        B
    </span>
</span> 

7 голосов
/ 20 августа 2009

Вместо того, чтобы плавать .square div, дайте им display: inline-block. Это может быть хитро в Firefox 3.0.x, но я считаю, что inline-block полностью поддерживается в 3.5.x.

5 голосов
/ 05 декабря 2012

Самое элегантное решение, которое я мог бы найти, когда у вас есть динамическое число div для центра, это использовать text-align: center; на родительском div и display: inline-block; на дочерних.

Это все подробно объясняется здесь .

1 голос
/ 27 ноября 2012

Просто поместите margin:auto; для всех последующих div в вашей основной оболочке, которая text-align:center;. СЛЕДУЕТ ли связать все дочерние элементы div с центром родительского элемента div, я думаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...