前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库flex 交叉轴 垂直
CSSFlex 布局

交叉轴在 row 和 column 下分别是什么方向?

交叉轴永远垂直于主轴。flex-direction: row 时主轴水平、交叉轴垂直;column 时主轴垂直、交叉轴水平。align-items 和 align-content 始终沿交叉轴工作,所以它们的实际方向随 flex-direction 翻转。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#Flex 布局#Flexbox
先看核心答案读代码示例
理解线索

交叉轴的方向

  1. row / row-reverse主轴水平,交叉轴垂直(上下方向)
  2. column / column-reverse主轴垂直,交叉轴水平(左右方向)
  3. align-* 属性align-items、align-self、align-content 全部沿交叉轴方向工作

reverse 不改变交叉轴方向,只改变子项在主轴上的排列顺序。

核心回答

先记住这个答案

交叉轴永远和主轴垂直。flex-direction: row 时主轴水平,交叉轴就是垂直方向。flex-direction: column 时主轴垂直,交叉轴就是水平方向。所有 align-* 属性(align-items、align-self、align-content)都沿交叉轴方向工作,具体是上下还是左右取决于 flex-direction。

  • 交叉轴永远垂直于主轴
  • row 下交叉轴是垂直方向
  • column 下交叉轴是水平方向
  • align-* 属性跟着交叉轴走

row 和 column 下的交叉轴对比

默认 flex-direction: row 时,大多数人对交叉轴的理解没有问题:align-items: center 让子项垂直居中,align-items: flex-start 让子项靠顶。这时交叉轴是垂直的。

改成 column 后,所有方向翻转。align-items: center 变成水平居中,align-items: flex-start 让子项靠左。因为交叉轴变成了水平方向。

两种方向下 align-items 的效果CSS
/* row:交叉轴垂直,align-items 管上下 */
.row {
  display: flex;
  flex-direction: row;
  align-items: center; /* 子项垂直居中 */
}

/* column:交叉轴水平,align-items 管左右 */
.col {
  display: flex;
  flex-direction: column;
  align-items: center; /* 子项水平居中 */
}

同一个 center,在 row 下居中是上下方向的,在 column 下是左右方向的。这就是为什么说 align-items 管的是交叉轴,而不是「垂直方向」。

reverse 不影响交叉轴方向

row-reverse 让子项从右到左排,但交叉轴仍然是垂直的。column-reverse 让子项从下到上排,交叉轴仍然是水平的。

reverse 只改变子项在主轴上的排列顺序,同时交换 flex-start 和 flex-end 的含义,但不影响交叉轴。所以 row-reverse 下 align-items: flex-start 还是让子项靠顶,只是子项的水平顺序反了。

回答前,多想一步

容易答错的地方

把交叉轴固定理解成垂直方向
这是最常见的误解。交叉轴不是固定的,它的方向取决于 flex-direction。只有 row(默认)时交叉轴是垂直的。一旦改成 column,交叉轴就变成水平的了。
以为 reverse 也会翻转交叉轴
reverse 只翻转主轴方向。row-reverse 下交叉轴还是垂直的,column-reverse 下交叉轴还是水平的。只有 flex-direction 从 row 变成 column(或反过来)才会翻转交叉轴。
试着用自己的话回答

面试官还会怎么问?

column 下 align-content 管的是什么方向?

水平方向。column 下交叉轴是水平的,align-content 分配的是多列之间的水平空间(前提是 flex-wrap: wrap 产生了多列)。

flex-wrap: wrap-reverse 会改变交叉轴方向吗?

wrap-reverse 不改变交叉轴的方向,但改变了换行的方向。row 加 wrap 时新行出现在下方,wrap-reverse 时新行出现在上方。align-items: flex-start 在 wrap-reverse 下是靠底而不是靠顶。

怎么快速判断某个 align-* 属性在当前方向下管的是哪个方向?

先看 flex-direction 确定主轴方向,然后交叉轴就是垂直于它的那个方向。align-* 永远沿交叉轴工作。row 下 align-* 管上下,column 下 align-* 管左右。

从一道题,走向一组知识

把知识连起来

Flex 布局

flex 布局里的主轴和交叉轴是怎么定义的?

先确定主轴,才能推导与之垂直的交叉轴。

Flex 布局

flex-basis 设成 auto 和 content 有什么区别?

flex-basis 按主轴尺寸解释,主轴变化时基准尺寸对应的物理维度也变。

参考资料

  • CSS:Flex 布局参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. row 和 column 下的交叉轴对比
  3. reverse 不影响交叉轴方向
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑