flex:1是flex-grow、flex-shrink和flex-basis三个属性的复合属性
1.flex-grow:该属性定义了项目的放大比例,默认为0,即如果存在剩余空间,也不放大。当所有项目的flex-grow属性都为1时,它们将等分剩余空间。如果一个项目的flex-grow属性为2,而其他项目都为1,则前者占据的剩余空间比其他项多一倍。
2.flex-shrink:该属性定义了项目的缩小比例,默认为1,即如果空间不足,项目将缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
3.flex-basis:该属性定义了在分配多余空间之前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。他的默认值为auto,即项目的本来大小。
因此,flex:1等同于flex:1 1 0,表示项目将等分剩余空间,允许缩小,并且初始大小为0。通常情况下,我们使用flex:1来让项目自动填充剩余空间,实现弹性布局。