Html 将列表水平居中,其中包含左浮动、左对齐的项目
我有一个Html 将列表水平居中,其中包含左浮动、左对齐的项目,html,css,Html,Css,我有一个div包含几个部分。其中一个部分s包含一个ol,其所有li都向左浮动。我试图使ol缩小,以在一行上包含尽可能多的lis,并使ol水平居中,同时保持lis左对齐 以下是我所拥有的: 当lis可以全部放在一行中时,列表居中: 当lis落在第二行时,部分和ol将增长,整个内容将左对齐: 我试图让它看起来像这样(取决于可用的宽度,部分也可以根据需要缩小): 设置宽度或最大宽度并使用margin:auto也不起作用: 为什么ol不收缩?如何解决此问题? 这些问题相似但不同: -在接受的答案中,
div
包含几个部分。其中一个部分
s包含一个ol
,其所有li
都向左浮动。我试图使ol
缩小,以在一行上包含尽可能多的li
s,并使ol
水平居中,同时保持li
s左对齐
以下是我所拥有的:
当li
s可以全部放在一行中时,列表居中:
当li
s落在第二行时,部分
和ol
将增长,整个内容将左对齐:
我试图让它看起来像这样(取决于可用的宽度,部分也可以根据需要缩小):
设置宽度或最大宽度并使用margin:auto
也不起作用:
为什么ol
不收缩?如何解决此问题?
这些问题相似但不同:
- -在接受的答案中,所有列表项都居中
- -每个项目都有自己的行
ol的ol
居中。您已将其设置为65%
width。如果在调整橙色边框的大小时查看它,它总是居中的
编辑
让我试着换一种说法。
ol
是块元素,与div
是块元素的方式相同。这意味着它会填满它所在的空间。在您的示例中,这由橙色边框表示。您想要的是ol
占用的空间少于100%。有很多不同的方法可以做到这一点,但你总是从尽可能多地占用空间的列表开始
其中一种方法是设置宽度。问题是你不想要固定的宽度。因此,您尝试使用百分比设置宽度。这不起作用,因为有很多间隔,其中一个百分比将导致li
不居中
另一种方法是设置ol
的左右边距。其工作原理与设置宽度相同
没有一种方法可以将某个元素居中,而您也希望float:left代码>。我认为混淆是因为您认为可以使ol
环绕li
。问题是,这不是ol
的工作原理。对不起,我的意思是70%。我直接转到了您提供的链接,该链接显示设置宽度不起作用,因为有额外的空间使事物偏离中心。与上一张图片对比,这张图片显示了我正在尝试做的事情。我是从开始工作的,但我会说得更清楚。不过它确实有效。额外的空间在那里,因为您使用的是百分比。如果将百分比与浮动一起使用,您几乎总是会偏离中心。例如,尝试将#list
的百分比宽度更改为宽度:330px代码>我想找到一个一般情况,它将使用可用的宽度,再次更新问题。
<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>
#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;
}