防止最后一行中的弹性项目变得比其他弹性项目大

van*_*van 6 html css flexbox

我有弹性容器和弹性项目定义如下:

.flex-container {
  padding: 0;
  margin: 0;
  list-style: none;   
  display: flex; 
  flex-wrap: wrap; 
}

.flex-item {
  background: tomato;
  padding: 5px;     
  height: 150px;
  margin-top: 10px;  
  margin-right: 5px;
  line-height: 150px;
  color: white;
  font-weight: bold;
  font-size: 3em;
  text-align: center;
  flex: 1 0 200px;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="flex-container">
  <li class="flex-item">1</li>
  <li class="flex-item">2</li>
  <li class="flex-item">3</li>
  <li class="flex-item">4</li>
  <li class="flex-item">5</li>
  <li class="flex-item">6</li>
  <li class="flex-item">7</li>
  <li class="flex-item">8</li>
  <li class="flex-item">9</li>
  <li class="flex-item">10</li>
  <li class="flex-item">11</li>
  <li class="flex-item">12</li>
  <li class="flex-item">13</li>
  <li class="flex-item">14</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如果最后一行中的项目很少,它们会被拉伸并且宽度大于上一行中的项目。

当前行为

正如您在图像中看到的,框 13 和 14 的宽度更大。

是否可以使最后一行中的项目与上一行中的项目大小相同?

Jos*_*Cho 8

添加不可见的弹性项目是最流行的方法。它保留了所有 flex 好的东西,并且是一个很有意义的黑客。

.hidden-flex-item {
    content: "";
    flex: 1 0 200px;
    padding: 5px;     
    margin-top: 10px;  
    margin-right: 5px;
    visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

在这里小提琴:https : //jsfiddle.net/px37t2jc/9/

如果您花时间学习 CSS 网格,也可以轻松处理此类问题。


acd*_*d37 6

如果您知道框 1-12 的宽度是多少(如果您想要设置宽度,或者只是使用 chrome 开发工具检查并获取宽度),则将 a 设置max-width: *px;flex-itemCSS。

这里: https: //codepen.io/anon/pen/QVgKMV

在此输入图像描述