Подтвердить что ты не робот

Как центрировать плавающие divs в контейнере

Можно ли центрировать плавающие divs в контейнере, и если да, то как?

Например, у меня есть страница с контейнером div, содержащая множество разноплановых (динамически сгенерированных) плавающих (слева) разделов. Дивы переполняются на следующую строку, но они никогда не сосредоточены в контейнере div, а вместо этого выровнены слева. Это выглядит так:

----------------------------
-                          -
- +++  +++++  ++++  ++     -
- +++  +++++  ++++  ++     -
-                          -
- ++   ++++++  +++  +      -
- ++   ++++++  +++  +      -
-                          -
----------------------------

В то время как я хотел бы, чтобы поплавковые divs были сосредоточены в контейнере следующим образом:

----------------------------
-                          -
-   +++  +++++  ++++  ++   -
-   +++  +++++  ++++  ++   -
-                          -
-   ++   ++++++  +++  +    -
-   ++   ++++++  +++  +    -
-                          -
----------------------------

Спасибо,

DLiKS

4b9b3361

Ответ 1

Это возможно. Используя http://www.pmob.co.uk/pob/centred-float.htm и http://css-discuss.incutio.com/wiki/Centering_Block_Element как источник.

Вот скрипка, демонстрирующая концепцию, используя HTML и CSS снизу: https://jsfiddle.net/t9qw8m5x/

<div id="outer">
    <ul id="inner">
        <li><a href="#">Button 1</a></li>
        <li><a href="#">Button 2 with long text</a></li>
        <li><a href="#">Button 3</a></li>
    </ul>
</div>

Это минимальный CSS, необходимый для эффекта:

#outer {
    float: right;
    position: relative;
    left: -50%;
}

#inner {
    position: relative;
    left: 50%; 
}

#inner > li {
    float: left;
}

Пояснение:

Начните с правила только li { float: left; }. Затем оберните эти поплавки в left: 50%; relative position, поэтому левый край окна <ul> находится в горизонтальном центре страницы, затем используйте правила в #outer, чтобы правильно настроить его, чтобы центр #inner был выровнен со страницей.

Ответ 2

Рассчитайте общее количество ширины пространства экрана, которое займет требуемый макет, затем сделайте родительскую ширину равной и примените margin: auto.

.outer {
  /* floats + margins + borders = 270 */
  max-width: 270px;
  margin: auto;
  height: 80px;
  border: 1px;
  border-style: solid;
}

.myFloat {
    /* 3 floats x 50px = 150px */
    width: 50px;
    /* 6 margins x 10px = 60px */
    margin: 10px;
    /* 6 borders x 10px = 60px */
    border: 10px solid #6B6B6B;
    float: left;
    text-align: center;
    height: 40px;
}
<div class="outer">
  <div class="myFloat">Float 1</div>
  <div class="myFloat">Float 2</div>
  <div class="myFloat">Float 3</div>
</div>

Ответ 3

Приятным трюком для центрирования элемента "div" является установка "margin: auto", он будет центрировать их.

Ответ 4

<div id='contain'><center><div id='content'>qwerty</div></center></div>

ИЛИ

<div id='contain'><div id='content'>qwerty</div></div>

<style type='text/css'>

#content   {

  width:200px;

  height:200px;

  margin:auto;
  /* margin:auto; requires width and i think height to be defined in nearly all browsers */

  }</style>