После некоторого поиска я не нашел подходящего способа центрировать список <li>
на фиксированную ширину div
.
Посмотрите страницу.. Это тоже не работает!
После некоторого поиска я не нашел подходящего способа центрировать список <li>
на фиксированную ширину div
.
Посмотрите страницу.. Это тоже не работает!
Так как элементы 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 в код выше.
Шаги:
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>
Это лучший способ центрировать 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;
}
Может быть
div ul
{
width: [INSERT FIXED WIDTH]
margin: 0 auto;
}
или
div li
{
text-align: center;
}
зависит от того, как он должен выглядеть (или комбинировать)
Чтобы центрировать объект блока (например, 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;
}
<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
<div> <center> <ul> <li>...</li> </ul></center> </div>
: -)