【问题标题】:Equal size of flex item while breaking the last item to next line [duplicate]将最后一项分到下一行时,弹性项目的大小相等[重复]
【发布时间】:2020-07-25 04:28:13
【问题描述】:

我希望我的弹性项目在不设置宽度的情况下具有相同的大小。
我知道可以通过将弹性项目设置为 flex: 1; 来完成。
但是,我也想打破最后一个项目进入下一行但保持其宽度等于其他项目,现在我被卡住了。

我该怎么做?

ul{
  padding: 0;
  margin: 0;
  list-style-type: none;
  display: flex; 
  flex-flow: row wrap;
}
li{
  flex: 1;
  border: solid 1px;
  text-align: center;
  flex-basis: calc(100% / 7);
}
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li class="keep-next-line">7</li> <!--Kepp this next line, but size should be equal to other item-->
</ul>

【问题讨论】:

  • 每行需要 6 个元素,所以除以 6 并且不需要 flex:1
  • @TemaniAfif - 很公平,这对我来说是令人困惑的部分,因为边界而除以 7。谢谢。

标签: html css flexbox


【解决方案1】:

您应该设置flex-grow:0 并且应该是calc(100% / 6) 而不是calc(100% / 7)。我还添加了box-sizing:border-box; 用于将边框包含在宽度中。

ul {
  padding: 0;
  margin: 0;
  list-style-type: none;
  display: flex;
  flex-flow: row wrap;
}

li {
  flex: 1;
  border: solid 1px;
  text-align: center;
  flex-basis: calc(100% / 6);
  box-sizing: border-box;
}

.keep-next-line {
  flex-grow: 0;
}
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li class="keep-next-line">7</li>
  <!--Kepp this next line, but size should be equal to other item-->
</ul>

【讨论】:

  • 只需删除 flex:1 就足够了,主要的变化是您制作的 6 分隔符而不是 7
  • @TemaniAfif box-sizing: border-box 也是必需的。
  • 我应该休息一段时间来重新调整一下大脑,因为边框我一直在除 7 并且我没有意识到使用flex: 1; 已经是多余的了。
猜你喜欢
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2018-12-27
  • 2015-09-11
  • 2018-03-03
  • 2017-11-04
  • 1970-01-01
  • 2022-11-16
相关资源
最近更新 更多