3-15单选题
来源:3-15 选择练习
慕斯4131122
2019-04-23 12:20:54
这道题在第一个li元素上添加了flex-basis属性是200px,那给定的宽度不是就不起作用了吗?为什么还是325px?
1回答
樱桃小胖子
2019-04-23
首先需要理解flex-basis这个属性,flex-basis这个属性值的作用也就是width的替代品,如果子容器设置了flex-basis或者width,那么在分配空间之前,他们会先跟父容器预约这么多的空间,然后剩下的才是归入到剩余空间,然后父容器再把剩余空间分配给设置了flex-grow的容器,观察代码:

总共有4个li,li的宽度是100px,但是因为第一个li设置了
li:nth-child(1){
flex-basis:200px;
}也就是说flex-basis:200px;会替代li设置的宽度100px,那么,这个时候第一个li的宽度可以理解成是200px,其他三个没有设置flex-basis属性的li宽度仍然是100px,那么,四个li的宽度总和是200px+100px*3=500px,而ul的总宽度是1000px,被li占去500px,还剩下500px,这500px,会由父级元素平均分配给四个li,分成4份,每一份是125px,那么,第一个li就是flex-basis设置的200px+自动分配的125px,变成了325px,第二个li、第三个li、第四个li的宽度就会变成原本li设置的100px+自动分配的125px,就变成了225px。
另外:
因为
li{
width:100px;
flex-grow:1;
}这个li是给所有的li设置样式,因此li:nth-child(1),也就是第一个li也有flex-grow:1;属性。
希望可以帮到你!
相似问题