css-flex
2022-08-08


类别属性名可选取值作用说明关键注意事项
Flex 容器属性displayflexinline-flex块级弹性容器(独占一行)、行内级弹性容器(同行排列)开启 Flex 布局核心,子元素自动成为 Flex 项目;inline-flex 容器宽高由内容决定
flex-directionrow(默认)、row-reversecolumncolumn-reverse控制主轴方向:水平左→右、水平右→左、垂直上→下、垂直下→上主轴方向决定 justify-content/align-items 的作用维度(水平 / 垂直)
flex-wrapnowrap(默认)、wrapwrap-reverse主轴空间不足时:不换行(压缩项目)、换行(新行在下)、反向换行(新行在上)nowrap 时项目受 min-width/min-height 限制;wrap 后生成多弹性行,需配合 align-content 控制行间距
flex-flow[flex-direction] [flex-wrap](默认 row nowrap复合属性:合并设置主轴方向 + 换行规则示例:flex-flow: column wrap(垂直方向 + 换行),简化代码书写
justify-contentflex-start(默认)、flex-endcenterspace-betweenspace-aroundspace-evenlystartendleftright主轴对齐方式:贴起点、贴终点、居中、首尾贴边均匀分布、两侧留白均匀分布、完全均匀分布、适配书写模式对齐主轴为 row 时控制水平对齐,column 时控制垂直对齐;space-evenly 兼容现代浏览器,left/right 仅水平主轴生效
align-itemsstretch(默认)、flex-startflex-endcenterbaselinefirst baselinelast baseline交叉轴单行对齐:拉伸填满、贴起点、贴终点、居中、基线对齐、首 / 尾基线对齐项目未设 height/min-heightstretch 生效;baseline 按文字第一行基线对齐,无视项目高度
align-contentstretch(默认)、flex-startflex-endcenterspace-betweenspace-aroundspace-evenlystartend交叉轴多行对齐(仅换行时生效):拉伸填满、贴起点、贴终点、居中、均匀分布等单行项目时无效;控制弹性行之间的间距,与 align-items(控制项目对齐)区分开
gap[length](如 10px)、[row-gap] [column-gap](如 10px 20px项目间距:统一设置水平 + 垂直间距,或分别设置行 / 列间距仅作用于项目之间,不影响项目与容器间距;替代 margin 更简洁,避免外层留白问题
row-gap/column-gap[length](如 20px/10px单独设置项目水平间距(列)、垂直间距(行)优先级低于 gap 复合属性;row-gap 控制行与行间距,column-gap 控制列与列间距
align-tracks/justify-tracksstretchflex-startflex-endcenter控制网格轨道对齐(Flex-Grid 混合场景)Flex 布局中极少使用,主要用于兼容 Grid 布局的轨道控制需求
Flex 项目属性flex-grownumber(默认 0,非负)主轴剩余空间分配比例:数值越大,占比越多默认为不扩展;多个项目按比例分配(如 1:2:3 则占比 1/6:2/6:3/6);取值不能为负数
flex-shrinknumber(默认 1,非负)主轴空间不足时收缩比例:数值越大,收缩越多默认为允许收缩;0 时项目不收缩(优先保证自身尺寸);取值不能为负数,需结合 flex-basis 生效
flex-basisauto(默认)、[length](如 150px)、[percentage](如 30%)、content项目主轴初始尺寸:默认取自身宽高、固定尺寸、容器占比、内容自适应优先级:flex-basis > 项目 width/heightcontent 兼容性稍差(IE 不支持)
flexnone0 0 auto)、auto1 1 auto)、[flex-grow][grow] 1 0)、[flex-grow] [flex-shrink][grow] [shrink] 0)、[flex-grow] [flex-shrink] [flex-basis]复合属性:合并设置扩展、收缩、基准尺寸推荐完整写法(如 flex: 1 0 200px);flex: 1 为最常用自适应写法(平均分配空间);flex: none 用于固定尺寸项目
align-selfauto(默认)、stretchflex-startflex-endcenterbaselinefirst baselinelast baseline单个项目交叉轴对齐:覆盖父容器 align-items 属性仅作用于当前项目;示例:某项目需 “垂直居下”,其他项目 “居中” 时使用
orderinteger(默认 0,可正负)项目视觉排序:数值越小,排列越靠前不修改 DOM 结构,仅视觉调整;负数可排在默认项目之前(如 order: -1);注意无障碍访问(屏幕阅读器按 DOM 顺序读取)
marginauto、常规取值(如 10px自动填充剩余空间(auto),或设置普通外边距margin: 0 auto 实现单个项目主轴居中;margin: auto 0 实现单个项目交叉轴居中;常规取值与普通 CSS margin 一致,影响项目间距