我不理解flex-grow属性吗?

Eth*_*n C 43 css flexbox flex-grow

我恐怕不能理解弹性增长.如果你跳到下面的JSFiddle - 我理解它的方式,.big应该是另一个的三倍.flex-item.如你所见,不是这样.为什么?

http://jsfiddle.net/nrur6mmo/

.flex-container {
    display:flex;
    padding:0 20%;
}
.flex-item {
    flex-grow:1;
    list-style-type:none;
    border:1px solid black;
}
.big {
    flex-grow:3;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="flex-container">
    <li class="flex-item big">Why isn't this exactly three times the size of the other one?</li>
    <li class="flex-item">Not really working like expected I don't think...</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Nat*_*tsu 65

您还必须指定一个值flex-basis(不指定此属性会导致类似于使用初始值auto的行为).

添加flex-basis: 0;到两个孩子或只是用速记设置:

.flex-item {
    flex: 1; /* flex-basis is 0 if omitted */
}
.big {
    flex-grow: 3;
}
Run Code Online (Sandbox Code Playgroud)

http://codepen.io/anon/pen/JEcBa

  • 我知道这个答案已经过时了,但它有助于提供一个简短的描述,说明为什么 flex-grow 需要与 flex-basis 建立关系。 (6认同)

cim*_*non 25

灵活增长通常以这种方式被误解.Flex-grow仅控制左侧空间在弹性项之间的分布方式,而不是它们彼此成比例的大小.

您正在寻找的是这样的:

.flex-item {
  width: 25%;
  list-style-type:none;
  border:1px solid black;
}
.big {
  width: 75%;
}
Run Code Online (Sandbox Code Playgroud)

也可以看看


wil*_*cus 5

鼓励作者使用 flex 速记而不是直接使用 flex-grow 来控制灵活性,因为速记会正确重置任何未指定的组件以适应常见用途。

https://drafts.c​​sswg.org/css-flexbox/#propdef-flex-grow

.flex-item {
   flex: 1;
}
.big {
   flex: 3;
}
Run Code Online (Sandbox Code Playgroud)

这是一个工作示例

http://codepen.io/anon/pen/VjZYPV

  • 这里对实际设置的内容进行一些解释会有所帮助。 (2认同)