Центр <ul> <li> в div

После некоторого поиска я не нашел подходящего способа центрировать список <li> на фиксированную ширину div.

Посмотрите страницу.. Это тоже не работает!

Ответ 1

Так как элементы ul и li по умолчанию - display: block - дают им автоматические поля и ширину, меньшую их контейнера.

ul {
    width: 70%;
    margin: auto;
}

Если вы изменили свое свойство отображения или сделали что-то, что отменяет обычные правила выравнивания (например, их плавающие), это не сработает.

Ответ 2

Чтобы центрировать ul и , также имеют элементы li, центрированные в нем, а также и динамически изменяют ширину ul, используйте display: inline-block; и оберните его в центрированный div.

<style type="text/css">
    .wrapper {
        text-align: center;
    }
    .wrapper ul {
        display: inline-block;
        margin: 0;
        padding: 0;
        /* For IE, the outcast */
        zoom:1;
        *display: inline;
    }
    .wrapper li {
        float: left;
        padding: 2px 5px;
        border: 1px solid black;
    }
</style>

<div class="wrapper">
    <ul>
        <li>Three</li>
        <li>Blind</li>
        <li>Mice</li>
    </ul>
</div>

Обновление

Вот ссылка jsFiddle в код выше.

Ответ 3

Шаги:

  • Напишите style="text-align:center;" родительскому div ul
  • Введите style="display:inline-table;" в ul
  • Введите style="display:inline;" в li

или используйте

<div class="menu">
 <ul>
   <li>item 1 </li>
   <li>item 2 </li>
   <li>item 3 </li>
 </ul>
</div>

<style>
 .menu { text-align: center; }
 .menu ul { display:inline-table; }
 .menu li { display:inline; }
</style>

Ответ 4

Это лучший способ центрировать UL внутри любого контейнера DIV.

Это решение CSS не использует свойства Width и Float. Float: Left и Width: 70%, вызовет головные боли, когда вам нужно будет дублировать свое меню на разных страницах с разными пунктами меню.

Вместо использования ширины мы используем отступы и поля для определения пространства вокруг текста/пункта меню. Кроме того, вместо использования Float: Left в элементе LI используйте display: inline-block.

Если вы плаваете слева от LI, вы буквально плаваете свой контент влево, а затем вы должны использовать один из вышеупомянутых хаков, чтобы центрировать ваш UL. Дисплей: встроенный блок создает ваше свойство Float для вас (вроде). Он берет ваш элемент LI и превращает его в элемент блока, который лежит рядом друг с другом (не плавающий).

С отзывчивым дизайном и использованием фреймворков, таких как Bootstrap или Foundation, будут возникать проблемы при загрузке и центре контента. У них есть несколько встроенных классов, но всегда лучше делать это с нуля. Это решение намного лучше для динамических меню (таких как система меню Adobe Business Catalyst).

Ссылка на этот учебник можно найти по адресу: http://html-tuts.com/center-div-image-table-ul-inside-div/

HTML

<div class="container">
        <ul>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
        </ul>
    </div>

CSS

.container {
    text-align: center;
    border: 1px solid green;
}
.container ul {
    border: 2px solid red;
    display: inline-block;
    margin: 10px 0;
    padding: 2px;
}
.container li {
    display: inline-block;
}
.container li a {
    display: inline-block;
    background: #444;
    color: #FFF;
    padding: 5px;
    text-decoration: none;
}

Ответ 5

Может быть

div ul
{
 width: [INSERT FIXED WIDTH]
 margin: 0 auto;
}

или

div li
{
text-align: center;
}

зависит от того, как он должен выглядеть (или комбинировать)

Ответ 6

Чтобы центрировать объект блока (например, ul), вам нужно установить ширину на нем, а затем вы можете установить для этого объекта левое и правое поля автоматически.

Чтобы центрировать встроенное содержимое блочного объекта (например, встроенное содержимое li), вы можете установить свойство css text-align: center;.

Ответ 7

Попробуйте

div#divID ul {margin:0 auto;}

Ответ 8

Просто добавьте text-align: center; к вашему <ul>. Проблема решена.

Ответ 9

Интересно, но попробуйте это с помощью плавающих элементов li внутри ul: Пример здесь

Теперь проблема: ul нуждается в фиксированной ширине, чтобы фактически сидеть в центре. Однако мы хотим, чтобы это относилось к ширине контейнера (или динамическому), margin: 0 auto на ul не работает.

Лучше всего отпустить список UL/Li и использовать другой подход пример здесь

Ответ 10

Другой вариант:

HTML

<nav>
  <ul class = "main-nav"> 
   <li> Productos </li>
   <li> Catalogo </li>
   <li> Contact </li>  
   <li> Us </li>
  </ul>
</nav>    

CSS

nav {
  text-align: center;
}

nav .main-nav li {
  float: left;
  width: 20%;
  margin-right: 5%;
  font-size: 36px;
  text-align: center;
}

Ответ 11

Если вы знаете ширину ul, тогда вы можете просто установить для поля ul значение 0 auto;

Это приведет к выравниванию ul в середине содержащего div

Пример:

HTML:

<div id="container">
 <ul>
  <li>Item1</li>
  <li>Item2</li>
 </ul>
<div>

CSS

  #container ul{
    width:300px;
    margin:0 auto;
  }

Ответ 12

Вот решение, которое я могу найти:

#wrapper {
  float:right;
  position:relative;
  left:-50%;
  text-align:left;
}
#wrapper ul {
  list-style:none;
  position:relative;
  left:50%;
}

#wrapper li{
  float:left;
  position:relative;
}

Ответ 13

<div id="container">
  <table width="100%" height="100%">
    <tr>
      <td align="center" valign="middle">
        <ul>
          <li>item 1</li>
          <li>item 2</li>
          <li>item 3</li>
        </ul>
      </td>
    </tr>
  </table>
</div>

Ответ 14

использовать теги oldschool center

<div> <center> <ul> <li>...</li> </ul></center> </div>

: -)