前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 布局

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

flex-direction 决定主轴方向,交叉轴始终垂直于主轴。row 时主轴水平、交叉轴垂直,column 时反过来。所有 flex 对齐属性都是相对轴来说的,不是相对「上下左右」。

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

两条轴的关系

  1. 主轴由 flex-direction 定义,row 时水平,column 时垂直
  2. 交叉轴永远与主轴垂直,主轴水平时交叉轴就垂直,反之亦然
  3. 对齐属性justify-content 沿主轴分配空间,align-items 沿交叉轴对齐子项

row-reverse 和 column-reverse 只是翻转子项排列方向,不改变轴的定义。

核心回答

先记住这个答案

flex 布局的核心概念是两条轴。主轴的方向由 flex-direction 决定:row 时主轴水平(从左到右),column 时主轴垂直(从上到下)。交叉轴永远垂直于主轴。所有 flex 对齐属性都是相对轴来定义的:justify-content 沿主轴分配空间,align-items 沿交叉轴对齐子项。

  • flex-direction 决定主轴方向
  • 交叉轴始终垂直于主轴
  • justify-content 管主轴
  • align-items 管交叉轴

四个 flex-direction 值对应的轴方向

flex-direction 有四个值,分别决定了主轴的方向和子项的排列顺序。

row 是默认值,主轴水平、子项从左到右排。row-reverse 主轴还是水平,但子项从右到左排。column 主轴变成垂直、子项从上到下排。column-reverse 主轴垂直、子项从下到上排。

各方向下的轴CSS
/* row(默认): 主轴 → 水平,交叉轴 ↓ 垂直 */
.row { flex-direction: row; }

/* column: 主轴 ↓ 垂直,交叉轴 → 水平 */
.col { flex-direction: column; }

/* row-reverse: 主轴 ← 水平反向,交叉轴 ↓ 垂直 */
.row-rev { flex-direction: row-reverse; }

/* column-reverse: 主轴 ↑ 垂直反向,交叉轴 → 水平 */
.col-rev { flex-direction: column-reverse; }

reverse 只改变子项在主轴上的排列方向,不改变交叉轴。所以 row-reverse 下 align-items 仍然管垂直方向。

为什么要用「轴」来思考而不是「上下左右」

刚学 flex 时很多人把 justify-content 记成「管水平」、align-items 记成「管垂直」。flex-direction: row 时这确实成立,但一旦改成 column,方向就全反了。

正确的理解方式是:先看 flex-direction 确定主轴方向,然后 justify-content 跟着主轴走,align-items 跟着交叉轴走。这样不管方向怎么变,属性的行为永远一致。

面试时如果能用「主轴」「交叉轴」来回答,而不是说「水平」「垂直」,面试官会觉得你理解得比较透。

回答前,多想一步

容易答错的地方

说 justify-content 管水平方向
只有 row 时才对。column 下 justify-content 管的是垂直方向。准确的说法是:justify-content 管主轴方向。
以为 reverse 会改变交叉轴
row-reverse 只是让子项从右到左排列,交叉轴仍然是垂直的。align-items: flex-start 依然是靠上对齐,不会变成靠下。
试着用自己的话回答

面试官还会怎么问?

flex-start 在不同方向下指的是哪里?

flex-start 指主轴或交叉轴的起点。row 下主轴起点是左边,column 下主轴起点是上面。row-reverse 下主轴起点是右边。具体位置取决于轴的方向和是否 reverse。

writing-mode 会影响主轴方向吗?

会。默认的 writing-mode: horizontal-tb 下,row 的主轴是从左到右。如果改成 vertical-rl,row 的主轴变成从上到下。不过这在面试中很少考。

Grid 布局也有主轴和交叉轴的概念吗?

Grid 不用「主轴」「交叉轴」的说法,而是用「行轴」和「列轴」(或者叫 inline axis 和 block axis)。Grid 的 justify-* 沿行轴工作,align-* 沿列轴工作。方向不随属性变化,比 flex 更直观。

从一道题,走向一组知识

把知识连起来

Flex 布局

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

交叉轴始终垂直于主轴,方向可从这道题继续推导。

Flex 布局

Flex 的 main-start 和 main-end 由什么决定?

主轴起点和终点还会随 flex-direction 与书写方向改变。

参考资料

  • flex 布局基本概念

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

本题目录
  1. 先记住这个答案
  2. 四个 flex-direction 值对应的轴方向
  3. 为什么要用「轴」来思考而不是「上下左右」
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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