你真正想要达到什么目的?
现在你有 .container 和 .list 都是 600px 宽,所以你看不到列表元素是左对齐还是居中对齐。
首先,.list 和 .container 的宽度应该不同。那么您的列表应该是一个inline-block 元素,以便它对text-align: center 做出反应。
我为您制作了一个代码笔,以便更清楚地说明这一点:https://codepen.io/leo-melin/pen/MWYbLLa
.container {
width: 800px;
height: 600px;
text-align: center;
border: 1px solid red;
overflow-y: auto;
}
.list {
display: inline-block;
width: 500px;
border: solid 1px #000; /* Added border to make it visual */
text-align: left;
}
.item {
display: inline-block;
width: 200px;
height: 200px;
margin: 10px;
background: gray;
}
更新 1
如果我现在对您的理解正确,那么您每行都有 n 个元素,它们都是 200 像素宽,如果没有足够的空间容纳另一个 200 像素的元素,您希望将它们居中放在容器中。您希望最后一项在容器内左对齐。
就像在另一个 stackoverflow 答案中一样:https://stackoverflow.com/a/40936683/2061685 您可能需要利用 flexbox 才能使该行为起作用。
所以这样的事情会做:
<div class="container">
<div class="list">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
<div class="item phantom"></div>
</div>
</div>
.container {
width: 100%;
height: 600px;
border: 1px solid red;
overflow-y: auto;
text-align: center;
}
.list {
display: inline-flex;
flex-wrap: wrap;
justify-content: center;
text-align: left;
}
.list:after {
content: '';
flex: auto;
}
.item {
display: inline-block;
width: 200px;
height: 200px;
margin: 10px;
background: gray;
}
.item.phantom {
visibility: hidden;
height: 0;
}
工作代码笔:https://codepen.io/leo-melin/pen/gObgLrX
如您所见,您需要添加这些幻像项以使最后一个元素保持在左侧。在只有几个项目的非常宽的屏幕上,您需要控制幻像元素的数量。在渲染项目时使用媒体查询或定义算法,以确保它在所有情况下都能正常工作。
希望这对您现在找到解决方案有所帮助。