干啥的?
根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间。
这定义读起来这拗口。实际很简单。比如说你定义了一个父容器,宽度600px。然后定义了3个子容器,宽度分别是200px,50px,50px。那么你这三个自容器势必不能占满你这个父容器。
恩,那么如果想让他占满呢?那你设置成加起来等于600不玩了。 除此之外,还有别的办法。弹性布局嘛
600-200-50-50=300px
还剩300.比如说我这300想按1:3的比例分给第二和第三个自容器。
flex-grow就是干这事的。
<ul class="flex">
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
<style>
.flex{display:flex;width:600px;margin:0;padding:0;list-style:none;}
.flex li:nth-child(1){width:200px;background:palevioletred;}
.flex li:nth-child(2){flex-grow:1;width:50px;background: paleturquoise;}
.flex li:nth-child(3){flex-grow:3;width:50px;background: peachpuff;}
</style>
怎么算的呢?
flex-grow的默认值为0,如果没有显示定义该属性,是不会拥有分配剩余空间权利的。
本例中b,c两项都显式的定义了flex-grow,flex容器的剩余空间分成了4份,其中b占1份,c占3分,即1:3
flex容器的剩余空间长度为:600-200-50-50=300px,所以最终a,b,c的长度分别为:
a: 50+(300/4)=200px
b: 50+(300/41)=125px
a: 50+(300/43)=275px
image.png
总结
就是把父容器剩余的给按比例分配一下