如何在不使用额外div或元素的情况下将列表项置于ul中。我有以下内容。我以为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/
答案 0 :(得分:120)
写display:inline-block
而不是float:left
。
li {
display:inline-block;
*display:inline; /*IE7*/
*zoom:1; /*IE7*/
background:blue;
color:white;
margin-right:10px;
}
答案 1 :(得分:18)
li{
display:table;
margin:0px auto 0px auto;
}
这应该有用。
答案 2 :(得分:14)
更现代的方法是使用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;
}
&#13;
<div>
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
</div>
&#13;
答案 3 :(得分:8)
您需要的只是text-align: center;
ul
答案 4 :(得分:2)
之前我遇到过这个问题,发现有时填充是个问题。
通过从ul中删除填充,任何设置为内联块的li都将很好地居中:
* {
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>
希望能帮助任何人遇到同样的问题:)
干杯,
杰克
答案 5 :(得分:1)
我添加了div行,它就是诀窍:
sudo pip install -r requirements.txt --upgrade --ignore-installed six
答案 6 :(得分:1)
另一种方法:
<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;
}
答案 7 :(得分:0)
text-align:center
和display:inline-block
都没有为我自己工作,但结合两者都做了:
ul {
text-align: center;
}
li {
display: inline-block;
}
答案 8 :(得分:0)
我有一个问题比较简陋,我这很快就是我迄今为止找到的最好的解决方案。
Shows what the output of the code looks like 边框只是为了显示间距而不需要。
<div class="center">
<ul class="dots">
<span>
<li></li>
<li></li>
<li></li>
</span>
</ul>
</div>
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%;}
答案 9 :(得分:0)
ul {
width: 100%;
background: red;
height: 20px;
display: flex;
justify-content: center;
align-items: center;
}
li {
background: blue;
color: white;
margin-right: 10px;
}
答案 10 :(得分:0)
在Bootstrap(4)中,使用display: inline-flex
,如下所示:
li {
display: inline-flex;
/* ... */
}
答案 11 :(得分:0)
事情是 ul 标签带有默认的边距和填充,因此您需要做的就是:
ul {
margin: 0px;
padding: 0px;
}
答案 12 :(得分:0)
// Ul css
ul{
width: 100%;
justify-content: center;
list-style-type: none;
display: flex;
}
// ul li css
ul li{
display: inline;
}
答案 13 :(得分:-1)
我解决了这个问题。
HTML:
<div class="list-wrapper">
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
</div>
CSS:
.list-wrapper {
text-align: -webkit-center;
}
.list-wrapper ul {
display:block;
}