再次学习 flex 布局
1. 容器与项目
Flex 布局由容器(flex container)和项目(flex item)两个部分组成:
- 容器默认存在两个轴:水平的主轴(main axis)和垂直的交叉轴(cross axis),项目默认沿主轴排列。
- Flex 属性包括容器属性和项目属性两个部分。
2. 容器属性
flex-direction: row | column | row-reverse | column-reverse:决定主轴方向。flex-wrap: nowrap | wrap | wrap-reverse(换行,第一行在下方):是否换行。flex-flow: <flex-direction> <flex-wrap>:上面两个属性的简写。justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly:定义项目在主轴上的对齐方式。align-items: flex-start | flex-end | center | baseline | stretch:交叉轴上的对齐方式。align-content: flex-start | flex-end | center | space-between | space-around | stretch:定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
3. 项目属性
order: <number>:定义项目排列顺序,默认 0,越小排列越靠前。flex-grow: <number>:定义项目的伸缩比例,按照比例给项目分配空间,默认 0。flex-shrink: <number>:定义项目的收缩比例,默认 1。flex-basis: auto | <length>:相当于width/height,定义在分配多余空间之前项目占据的主轴空间。flex: <flex-grow> <flex-shrink> <flex-basis>:上面三个属性的简写。align-self: auto | flex-start | flex-end | center | baseline | stretch:定义单个项目的对齐方式,覆盖align-items属性。
补充:
flex: 1等价于flex: 1 1 0%,表示"占满剩余空间";flex: auto等价于flex: 1 1 auto;flex: none等价于flex: 0 0 auto。- flex 项目默认
min-width: auto,可能导致内容溢出不会被压缩,需要显式设置min-width: 0才能真正被挤压。



