前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 热点
旧版
首页程序员面试题库align-items center column
CSSFlex 布局

flex-direction 改成 column 后 align-items 对齐的是哪个方向?

flex-direction: column 时主轴变成垂直方向,交叉轴变成水平方向。align-items 始终作用在交叉轴上,所以 align-items: center 这时候让子项水平居中,而不是垂直居中。

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

轴方向随 `flex-direction` 翻转

  1. row 模式主轴水平、交叉轴垂直,align-items 管上下对齐
  2. column 模式主轴垂直、交叉轴水平,align-items 管左右对齐
  3. 记忆口诀justify 跟着主轴走,align 跟着交叉轴走

column 模式下如果想让子项垂直居中,要用 justify-content: center,很多人会在这里搞反。

核心回答

先记住这个答案

align-items 作用在交叉轴上,而交叉轴的方向取决于 flex-direction。默认 row 时交叉轴是垂直的,align-items: center 让子项垂直居中。改成 column 后交叉轴变成水平的,align-items: center 就让子项水平居中了。记住一个原则:justify 系列跟着主轴走,align 系列跟着交叉轴走,方向永远由 flex-direction 决定。

  • align-items 始终管交叉轴
  • column 下交叉轴是水平方向
  • center 此时让子项水平居中
  • 垂直方向用 justify-content

row 和 column 下的对齐方向对比

很多人习惯把 align-items 理解成「垂直对齐」,但这只在 flex-direction: row 时成立。一旦改成 column,所有轴的方向都翻转了。

两种方向的效果CSS
/* row 模式:align-items 控制垂直方向 */
.row-container {
  display: flex;
  flex-direction: row;
  align-items: center;   /* 子项垂直居中 */
  justify-content: center; /* 子项水平居中 */
  height: 200px;
}

/* column 模式:align-items 控制水平方向 */
.col-container {
  display: flex;
  flex-direction: column;
  align-items: center;   /* 子项水平居中 */
  justify-content: center; /* 子项垂直居中 */
  height: 200px;
}

同样的 align-items: center,在 row 模式下让子项上下居中,在 column 模式下让子项左右居中。justify-content 也是一样的道理,方向反过来了。

一个常见的居中布局场景

column 模式最常用的场景是让内容垂直排列(比如标题在上、内容在下),同时要让这些内容在水平方向居中。

这时候写 flex-direction: column 加 align-items: center 就行了。子项按照从上到下的顺序排列,每个子项在水平方向居中。如果还想垂直居中整体,再加 justify-content: center。

这比用 margin: 0 auto 更灵活,因为 margin: auto 要求子项有明确宽度,而 align-items: center 不需要。

回答前,多想一步

容易答错的地方

说 align-items 永远管垂直方向
这是最常见的误解。align-items 管的是交叉轴,不是垂直方向。交叉轴的方向随 flex-direction 变化。面试时如果直接说「align-items 管垂直对齐」,面试官会追问「column 模式下呢」。
column 下搞反 justify-content 和 align-items
column 下想让子项垂直居中,应该用 justify-content: center(主轴是垂直的)。很多人凭直觉写 align-items: center,结果变成了水平居中。
试着用自己的话回答

面试官还会怎么问?

flex-direction: column-reverse 下 align-items 的方向会变吗?

不会变。column-reverse 只是让子项的排列顺序反过来(从下到上),交叉轴仍然是水平方向。align-items: center 依然让子项水平居中。

row 下想让某一个子项在垂直方向单独对齐怎么办?

给那个子项设 align-self。比如容器 align-items: flex-start 让所有子项靠上对齐,某个子项写 align-self: flex-end 就能单独靠下。

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

会。writing-mode: vertical-rl 会让文档流变成垂直方向,这时 flex-direction: row 的主轴也变成了垂直。但这种场景在面试里很少考,了解即可。

从一道题,走向一组知识

把知识连起来

Flex 布局

align-items 默认值 stretch 在什么条件下才会拉伸子项?

stretch 在 column 下是水平拉伸子项到容器宽度,和 row 下的垂直拉伸方向相反。

Flex 布局

align-self 怎么覆盖 align-items 的效果?

align-self 可以覆盖 align-items,在 column 下同样作用在水平方向。

参考资料

  • CSS:Flex 布局参考资料

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

本题目录
  1. 先记住这个答案
  2. row 和 column 下的对齐方向对比
  3. 一个常见的居中布局场景
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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