【发布时间】:2018-08-28 03:22:40
【问题描述】:
我很想在这个问题上看到一些观点和意见,因为我在使用 flexbox 和网格时遇到了这个问题。我将在列表中包含可变数量的项目(例如在图片库中),但每个项目的大小都是固定的。现在,我需要将列表项水平居中,并让它们始终对齐。
html {
box-sizing: border-box;
}
p {
padding: 1em;
}
.wrapper {
max-width: 100%;
min-height: 500px;
padding: 2em 0;
background: papayawhip;
border: 1px solid orange;
overflow: hidden;
display: flex;
justify-content: center;
}
ul {
display: flex;
background: mistyrose;
width: 100%;
justify-content: flex-start;
flex-wrap: wrap;
margin: 1em;
border: 1px solid blue;
padding: 0;
}
li {
display: block;
background: indianred;
width: 200px;
height: 200px;
margin: .1em;
/* padding: 1em; */
color: white;
font-size: 2rem;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
align-self: stretch;
border: 1px solid azure;
}
li div {
display: inline-block;
}
<div class="wrapper">
<ul>
<li>
<div>
First
</div>
</li>
<li>
<div>
Second
</div>
</li>
<li>
<div>
Third
</div>
</li>
<li>
<div>
Fourth
</div>
</li>
<li>
<div>
Fifth
</div>
</li>
</ul>
</div>
我一直在努力让它像 Flexbox 那样工作,并且想知道这是否是我需要使用 CSS Grid 的情况。
可以在下图中看到所需的行为。考虑所需行为的另一种方法是justify-content: flex-start,但整个事情(从最左侧列表项的左边缘到最右侧列表项的右边缘)居中。
如果这不能用 Flexbox 来实现,那么 CSS 网格是要走的路吗?还是可以用不同的方式达到同样的效果?
【问题讨论】:
-
您在寻找
justify-content: space-around吗? -
使用
justify-content: space-around,第二行与第一行失去对齐。理想的情况是justify-content: flex-start可以居中.. -
hmm.. 那个线程听起来好像 flexbox 无法实现这一点。我想知道如何改用 CSS Grid 来实现?
-
仅供参考,因为
li设置为display: flex,其display: inline-block子级上的display: inline-block没有任何效果:stackoverflow.com/questions/39261797/…