我有一个水平无序列表,我想在 div 容器中水平居中(比列表任意大)。我正在考虑将 ul 显示为一个块并使用自动边距将列表置于其父容器中的中心。但是......我似乎无法让 ul 显示为一个块并且不占用 100% 的宽度。
据我了解,块元素采用所需的宽度来包裹子元素(除非它们没有被清除浮动或绝对定位),所以我认为将 ul 和 li 作为块放置应该可以解决问题。不幸的是,它没有,我不明白为什么。
任何的想法?
这是代码:http: //jsfiddle.net/kccbg/1/
我有一个水平无序列表,我想在 div 容器中水平居中(比列表任意大)。我正在考虑将 ul 显示为一个块并使用自动边距将列表置于其父容器中的中心。但是......我似乎无法让 ul 显示为一个块并且不占用 100% 的宽度。
据我了解,块元素采用所需的宽度来包裹子元素(除非它们没有被清除浮动或绝对定位),所以我认为将 ul 和 li 作为块放置应该可以解决问题。不幸的是,它没有,我不明白为什么。
任何的想法?
这是代码:http: //jsfiddle.net/kccbg/1/
尝试display: inline-block
改用,并text-align: center
像这样设置容器:
HTML:
<div class="container">
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
</div>
CSS:
.container{
width:100%;
background-color:#CCC;
height:20px;
text-align: center;
}
ul{
display:inline-block;
margin:0 auto;
}
li{
display:inline-block;
}
更新:(基于gmeben的评论)
将css更改为:
.container{width:100%; background-color:#CCC; text-align:center}
li{display:inline;}
并删除
<li class="clear"></li>
来自 html。
没有浮动和清除,也没有内联块(不是所有浏览器都支持/正确渲染)。
如果您知道列表项的总宽度,则可以设置宽度,<ul>
然后将其边距设置为 0 auto。jsFiddle 示例。
CSS
.container{
width:100%;
background-color:#CCC;
height:20px;
}
ul{
list-style:none;
width:200px;
margin:0 auto;
}
li{
float:left;
}
</p>