[英]Horizontally centering a list with left-floated, left-aligned items
我有一个包含几个section
的div
。 其中一个section
包含一个ol
,并且它的所有li
都向左浮动。 我试图让ol
缩小到包含多达li
S作为它可以在同一行,并且水平居中的ol
,同时保持了li
的左对齐。
这就是我所拥有的: http : //jsbin.com/ocokog/1/edit
<div id="wrapper">
<section id="section">
<ol id="list">
<li id="i0"></li>
<li id="i1"></li>
<li id="i2"></li>
<li id="i3"></li>
<li id="i4"></li>
</ol>
</section>
</div>
非装饰性CSS:
#wrapper {
width: 85%;
text-align: center;
}
#section {
display: inline-block;
}
#list {
list-style-type: none;
margin: 0;
padding: 0;
overflow: auto;
}
#list > li {
width: 100px;
height: 100px;
float: left;
}
如果li
可以全部放在一行上,则列表居中:
当li
落到第二行时, section
和ol
增长,整个部分左对齐:
我试图让它看起来像这样(取决于可用的宽度,如果需要,该section
也可以收缩):
设置宽度或最大宽度并使用margin: auto
也不太起作用: http : //jsbin.com/ocokog/6/edit
ol
为什么不缩小? 我怎样才能解决这个问题?
这些问题相似但不同:
ol
以中心为中心。 你已将它设置为65%
宽度。 如果在重新调整大小时查看橙色边框,它始终居中。
让我试着改写一下。 ol
是块元素,与div
是块元素的方式相同。 这意味着它填满了它所在的空间。这在您的示例中由橙色边框表示。 你想要的是, ol
占据的空间不到100%。 有许多不同的方法,但你总是从列表中占用尽可能多的空间。
其中一种方法是设置宽度。 这个问题是你不想要一个固定的宽度。 所以你尝试使用百分比来设置宽度。 这不起作用,因为有许多间隔,百分比将导致li
不居中。
另一种方法是设置ol
左右边距。 这与设置宽度相同。
没有办法在你想要float:left;
的元素中居中东西float:left;
。 我想混淆的来源,因为你认为你可以让ol
周围的包裹li
。 问题是,这不是ol
工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.