1. 前言

为元素设置 display: flex 或者 display: inline-flex flex 布局即创建。直接设置 display: flex 或者 display: inline-flex 的元素称为 flex 容器,里面的子元素称为 flex 子项。flex 以及 inline-flex 的区别类似于 block 和 inline-block,一个是块状元素一个是行内元素。

flex 布局相关的属性正好分为两类,一类作用在 flex 容器上,另一类作用在 flex 子项上:

作用在 flex 容器上 作用在 flex 子项上
flex-direction order
flex-wrap flex-grow
flex-flow flex-shrink
justify-content flex-basis
align-items flex
align-content align-self

无论作用在 flex 容器上,还是作用在 flex 子项,都是控制的 flex 子项的呈现,只是前者控制的是整体,后者控制的是个体。

2. flex 属性

flex 属性是 flex-growflex-shrinkflex-basis 这 3 个 CSS 属性的缩写。默认值为 initial,具体为 flex: 0 1 auto

3. flex 属性缩写

缩写 等同于 说明
flex: initial flex: 0 1 auto 初始值,常用。不增长可缩小,可自动换行
flex: none flex: 0 0 auto 推荐。不增长不缩小,不换行
flex: 1 flex: 1 1 0% 推荐。可增长可缩小,优先最小尺寸
flex: auto flex: 1 1 auto 适用场景少。可增长可缩小,优先最大尺寸
flex: 0 flex: 0 1 0% 适用场景少。不增长可缩小,始终换行

4. flex-basis

在 flex 布局中,一个子项的宽度由元素的基础尺寸(width/flex-basis),增长或缩小(flex-grow/flex-shrink),最大最小尺寸限制(min-width/max-width/min-content)三者共同决定。


有关 flex 布局可以参考之前的文章 Flex 布局