Как я могу центрировать элементы списка внутри элемента UL?
Как я могу центрировать элементы списка внутри ul без использования дополнительных divs или элементов. У меня есть следующее. Я думал text-align:center
будет делать трюк. Кажется, я не могу этого понять.
<style>
ul {
width:100%;
background:red;
height:20px;
text-align:center;
}
li {
display:block;
float:left;
background:blue;
color:white;
margin-right:10px;
}
</style>
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
Проверьте jsfiddle http://jsfiddle.net/3Ezx2/1/
10 ответов:
написать
display:inline-block
вместоfloat:left
.li { display:inline-block; *display:inline; /*IE7*/ *zoom:1; /*IE7*/ background:blue; color:white; margin-right:10px; }
http://jsfiddle.net/3Ezx2/3/
более современный способ-использовать flexbox:
ul{ list-style-type:none; display:flex; justify-content: center; } ul li{ display: list-item; background: black; padding: 5px 10px; color:white; margin: 0 3px; } div{ background: wheat; }
<div> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> </div>
я столкнулся с этой проблемой раньше и обнаружил, что иногда заполнение является проблемой.
удаляя прокладку из ul, любой li, установленный в inline-block, будет хорошо центрирован:
* { box-sizing: border-box; } ul { width: 120px; margin: auto; text-align: center; border: 1px solid black; } li { display: inline-block; } ul.no_pad { padding: 0; } p { margin: auto; text-align: center; } .break { margin: 50px 10px; }
<div> <p>With Padding (Default Style)</p> <ul class="with_pad"> <li>x</li> <li>x</li> <li>x</li> <li>x</li> </ul> <div class="break"></div> <p>No Padding (Padding: 0)</p> <ul class="no_pad"> <li>x</li> <li>x</li> <li>x</li> <li>x</li> </ul> <div>
надеюсь, что это поможет любому, кто сталкивается с этой же проблемой :)
спасибо,
Джейк
Я добавил div-строку, и она сделала трюк:
<div style="text-align:center"> <ul> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> </ul> </div>
другой способ сделать это:
<ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> ul { width: auto; display: table; margin-left: auto; margin-right: auto; } ul li { float: left; list-style: none; margin-right: 1rem; }
ни
text-align:center
, ниdisplay:inline-block
работал на меня самостоятельно, но совмещая оба сделал:ul { text-align: center; } li { display: inline-block; }
у меня была проблема slimier у меня это быстрое и лучшее решение я нашел до сих пор.
как выглядит вывод
показывает, как выглядит вывод кода Границы просто показывают расстояние и не нужны.
Html:
<div class="center"> <ul class="dots"> <span> <li></li> <li></li> <li></li> </span> </ul> </div>
CSS:
ul {list-style-type: none;} ul li{ display: inline-block; padding: 2px; border: 2px solid black; border-radius: 5px;} .center{ width: 100%; border: 3px solid black;} .dots{ padding: 0px; border: 5px solid red; text-align: center;} span{ width: 100%; border: 5px solid blue;}
не все здесь необходимо для центрирования элементов списка.
вы можете сократить css до этого получить тот же эффект:
ul {list-style-type: none;} ul li{display: inline-block;} .center{width: 100%;} .dots{ text-align: center; padding: 0px;} span{width: 100%;}