主轴由flex-direction决定,justify-content控制主轴对齐,align-items和align-content分别控制交叉轴上单行或多行元素的对齐方式,从而实现灵活布局。

在使用 CSS Flexbox 布局时,理解主轴(main axis)和交叉轴(cross axis)是掌握其布局逻辑的核心。它们决定了子元素的排列方向与对齐方式。
主轴与交叉轴的基本概念
Flexbox 是一种一维布局模型,依赖于两个相互垂直的轴:主轴和交叉轴。
• 主轴(main axis)是 flex 容器中主要的布局方向,子元素沿着主轴依次排列。• 交叉轴(cross axis)则垂直于主轴,用于控制子元素在另一维度上的对齐。
这两个轴的方向不是固定的,而是由 flex-direction 属性决定的:
flex-direction: row(默认值):主轴为水平方向(从左到右),交叉轴为垂直方向(从上到下)。•
flex-direction: column:主轴为垂直方向(从上到下),交叉轴为水平方向(从左到右)。•
row-reverse 和 column-reverse 会反转主轴方向,交叉轴随之调整。
主轴上的对齐:justify-content
该属性控制子元素在主轴方向上的对齐方式,适用于主轴有剩余空间时的分配。
立即学习“前端免费学习笔记(深入)”;
•flex-start:元素向主轴起点对齐。•
flex-end:元素向主轴终点对齐。•
center:元素在主轴居中。•
space-between:两端对齐,元素间间距相等。•
space-around:每个元素周围有相等空间。•
space-evenly:所有元素之间的间距完全相等。例如,当 flex-direction: row 时,justify-content 控制的是水平方向的对齐;若改为 column,则控制垂直方向。
交叉轴上的对齐:align-items 与 align-content
align-items 决定单行子元素在交叉轴上的对齐方式。
flex-start:元素向交叉轴起点对齐。•
flex-end:向交叉轴终点对齐。•
center:在交叉轴居中。•
stretch(默认):拉伸以填满容器(无固定尺寸时)。•
baseline:按文本基线对齐。当容器内有多行 flex 元素(启用 flex-wrap: wrap)时,align-content 控制行与行之间在交叉轴上的分布,类似 justify-content 在主轴的作用。
align-items 影响每行内的元素,而 align-content 影响行本身的位置。
实际应用示例
常见场景如居中一个元素:
设置容器为 flex,并使用justify-content: center 和 align-items: center,即可实现水平垂直居中,无需关心元素尺寸。导航栏布局:
使用flex-direction: row 水平排列菜单项,通过 justify-content: space-between 让首尾项贴边,中间均匀分布。卡片网格:
用flex-wrap: wrap 允许换行,结合 align-content: flex-start 控制多行卡片的垂直对齐。
基本上就这些。只要搞清主轴由 flex-direction 决定,其余对齐属性都围绕这个方向展开,Flexbox 的行为就很容易预测和控制。










