Центр в div
после некоторого поиска я не нашел правильного способа центрировать список <li> в фиксированную ширину div.
посмотри страница.. Это тоже не работает!
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 в коде выше.
действия :
- написать
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: слева и ширина: 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; }зависит от того, как это должно выглядеть (или соединяя)
для центрирования объекта блока (например,
ul) вам нужно установить ширину на нем, а затем вы можете установить, что объекты левого и правого полей на авто.В центре встроенное содержимое объекта заблокировать (например, встроенный контент
li) вы можете установить свойство csstext-align: center;.
интересно, но попробуйте это с плавающими элементами 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>
Comments