flex
是复合属性,是flex-grow
,flex-shrink
和 flex-basis
的简写,默认值为0 1 auto
,后两个属性可选。
- flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间也不放大
- flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
- flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(相当于我们设置的width)
而 flex: auto;
是 flex:1 1 auto;
的简写,即元素尺寸可以弹性增大,也可以弹性变小,具有十足的弹性,但在尺寸不足时会优先最大化内容尺寸。
再介绍下使用场景:
当希望元素充分利用剩余空间,但是各自的尺寸按照各自内容进行分配的时候,适合使用 flex:auto
。
flex:auto
多用于内容固定,或者内容可控的布局场景,例如导航数量不固定,每个导航文字数量也不固定的导航效果就适合使用 flex:auto
效果来实现,