Центр в div



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



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

579   16  

16 ответов:

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

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

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

центрировать 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 в коде выше.

действия :

  1. написать style="text-align:center;" родитель div на ul
  2. написать style="display:inline-table;" до ul
  3. написать 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>

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

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

вместо использования ширины, мы используем отступы и поля для определения пространства вокруг текста / пункта меню. Также, вместо того, чтобы использовать поплавок:слева в элемент li, использовать дисплей: встроенный блок.

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

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

ссылка на этот учебник можно найти по адресу: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;
}

может быть

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

или

div li
{
text-align: center;
}

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

Я люблю flexbox:

ul {
  justify-content: center;
  display: flex;
}

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

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

попробовать

div#divID ul {margin:0 auto;}

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

интересно, но попробуйте это с плавающими элементами li внутри ul: пример

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

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

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

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;
}

если вы знаете ширину 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;
  }

вот решение, которое я мог бы найти:

#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;
}

Я искал тот же случай и попробовал все ответы, изменив ширину <li>.
К сожалению, все они не смогли получить одинаковое расстояние слева и справа от

<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>

используйте oldschool center-tags

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

: -)

Comments

    Ничего не найдено.