css 我是不是不懂弹性增长的属性?

pgvzfuti  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(106)

恐怕我不懂柔性生长。如果你跳到下面的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;
}
<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>
vojdkbi0

vojdkbi01#

您还必须为flex-basis指定一个值(不指定此属性会导致与使用初始值auto类似的行为)。
flex-basis: 0;添加到两个子元素中,或者使用简写设置它:

.flex-item {
    flex: 1; /* flex-basis is 0 if omitted */
}
.big {
    flex-grow: 3;
}

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

xu3bshqb

xu3bshqb2#

Flex-grow通常被误解为这种方式。Flex-grow只控制剩余的空间如何在Flex项目之间分配,而不是它们之间的比例有多大。
你要找的其实就是这个

.flex-item {
  width: 25%;
  list-style-type:none;
  border:1px solid black;
}
.big {
  width: 75%;
}

另见

chy5wohz

chy5wohz3#

作者被鼓励使用flex简写来控制灵活性,而不是直接使用flex-grow,因为简写可以正确地重置任何未指定的组件以适应常见用途。
https://drafts.csswg.org/css-flexbox/#propdef-flex-grow

.flex-item {
   flex: 1;
}
.big {
   flex: 3;
}

这是一个工作示例
http://codepen.io/anon/pen/VjZYPV

rhfm7lfc

rhfm7lfc4#

相关的东西:* * 秩序很重要。**例如:
联系我们

<div class="container">
    <div class="el el-1">One</div>
    <div class="el el-2">two</div>
    <div class="el el-3">three</div>
    <div class="el el-4">four</div>
    <div class="el el-5">five</div>
    <div class="el el-6">six</div>
    <div class="el el-7">seven</div>
    <div class="el el-8">eight</div>
 </div>

css:

.container {
     display: flex;
 }

以下样式工作

.el {
    flex-grow: 1;
 }

 .el-4 {
    flex-grow: 3;
 }

但是如果你改变顺序,它将工作:😲

.el-4 {
    flex-grow: 3;
 }

 .el {
    flex-grow: 1;
 }

相关问题