【问题标题】:Flex items are shrinking below flex-basisFlex 项目正在收缩到 flex-basis 以下
【发布时间】:2018-05-01 21:28:36
【问题描述】:

我一直在阅读堆栈溢出问题和其他关于 flex-basis 应该做什么的博客,但我仍然无法完全理解它如何影响元素的行为。

这是我的代码示例:

.item {
  background-color: red;
  border: 1px solid pink;
  margin: 10px;
  padding: 10px;
}

.container {
  display: flex;
}

.container .item {
  height: 50px;
  flex-grow: 1;
}

.container3 {
  flex-direction: row;
  width: 500px;
}

.container3 .a,
.container3 .b {
  flex-basis: 200px;
}
<div class="container container3">
  <div class="item a">Segmentation fault</div>
  <div class="item b">Null pointer exception</div>
  <div class="item c">hello</div>
  <div class="item d">hello</div>
</div>

对于ab,我将flex-basis 设置为200px,但它们都比200px 宽度短。我的印象是flex-basis 是项目的“初始”宽度,意思是项目的“最小宽度”。但显然这不是真的,所以我不明白“初始”是什么意思。

当给flex-basis一个像素值时,计算项目ab的宽度的具体数学公式是什么?

【问题讨论】:

    标签: css flexbox


    【解决方案1】:

    弹性容器的初始设置是flex-shrink: 1

    这意味着允许弹性项目收缩以免溢出容器。

    一旦禁用此功能,弹性项目将不会缩小到其指定的flex-basis 值以下。

    * { flex-shrink: 0; } /* NEW */
    
    .item {
      background-color: red;
      border: 1px solid pink;
      margin: 10px;
      padding: 10px;
    }
    
    .container {
      display: flex;
      border: 1px dashed black;
    }
    
    .container .item {
      height: 50px;
      flex-grow: 1;
    }
    
    .container3 {
      flex-direction: row;
      width: 500px;
    }
    
    .container3 .a,
    .container3 .b {
      flex-basis: 200px;
    }
    <div class="container container3">
      <div class="item a">Segmentation fault</div>
      <div class="item b">Null pointer exception</div>
      <div class="item c">hello</div>
      <div class="item d">hello</div>
    </div>

    对于ab,我将flex-basis 设置为200px,但它们的宽度都小于200px。我的印象是flex-basis 是项目的“初始”宽度,意思是项目的“最小宽度”。但显然这不是真的,所以我不明白“初始”是什么意思。

    事实上,这是真的。 flex-basis 设置项目的初始长度。根据您的定义,您的项目的初始宽度为 200 像素。 然后应用flex-shrinkflex-grow

    当给flex-basis一个像素值时,计算项目ab的宽度的具体数学公式是什么?

    这里解释了计算:

    【讨论】:

    • 在我的问题中,我看到 .item.a 的宽度为 156 像素。你知道用什么数学公式来确定吗?为什么它是 156px 而不是 152px 或任何其他值?我问是因为我试图预测 flex-basis 在未指定 flex-shrink 时对元素的行为。
    • 查看我答案末尾的链接。
    猜你喜欢
    • 2020-04-24
    • 2015-03-23
    • 2020-12-08
    • 2020-01-04
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2021-10-11
    相关资源
    最近更新 更多