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

space-between 和 space-around 怎么分主轴剩余空间?

两者都在 Flex 项尺寸确定后分配正向剩余空间。space-between 把空间放在相邻项目之间,首尾项目贴近主轴两端;space-around 给每个项目两侧各一份等量空间,因此内部间距是容器边缘间距的两倍。没有正向剩余空间时,不能期待它们继续制造空隙。

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

余量在项目间或项目周围分配

  1. space-between首尾靠两端,余量只进相邻项目之间
  2. space-around每项两侧分余量,边缘空白是内部一半
  3. gap固定沟槽先计入尺寸,再分配剩余正空间

项目之间由两个半份空间组成,边缘只有一个半份,所以中间空隙通常是边缘的两倍。

核心回答

先记住这个答案

三张定宽卡片放进一行,先算卡片和 gap 占了多少宽度,剩下的才由 justify-content 分配。space-between 把可分配余量放到两道卡片间,首尾靠两端;space-around 给每张卡片两侧各一份,边缘看起来只有内部间隔的一半。项目本身变宽后余量会减少,间距也会跟着收缩。

  • space-between 两端贴边
  • space-around 边缘空隙是内部一半
  • 项目增长会先消耗余量
  • 换行后每条线单独对齐

三张卡片的两种间距算法

三张宽 100px 的卡片放进 500px 容器,忽略其他间距后有 200px 余量。space-between 只有两个内部空隙,各为 100px;space-around 相当于给三张卡片各分 200/3px 的空间,再一半放在左、一半放在右,内部空隙约 66.7px,两侧边缘约 33.3px。记住这个比例,比背“均匀排列”更可靠。

计算三张卡片之间的余量CSS
.between {
  display: flex;
  justify-content: space-between; /* 只在相邻项之间分余量 */
}
.around {
  display: flex;
  justify-content: space-around; /* 每项两侧各分半份 */
}

两组声明改变的是正余量的分配位置,不会修改项目本身的尺寸。

余量在项目间或项目周围分配

justify-content 处理的是项目经过伸缩后剩下的主轴空间。如果子项都写了 flex-grow: 1,余量先被项目尺寸吃完,这两个取值看起来可能完全一样。使用 flex-wrap: wrap 时,每条线各自分配自己的剩余空间;只有一个项目的末行在 space-between 下会落在主轴起始侧,而 space-around 会给它两侧留白。

gap 与空间分配也不要混在一起。gap: 12px 先提供固定的项目间距,space-between 再把剩余正空间加到每一处间隔;因此实际间距至少是固定沟槽,容器变宽还会增长。space-around 也会在这个固定沟槽之外分配边缘和内部空间。要让卡片间距始终保持 12px,通常只写 gap,再用其他方式处理整组卡片的位置。只有希望随着容器变宽把它们推散,才用这些分配值。

回答前,多想一步

容易答错的地方

以为 space-around 的所有空隙都相等
项目之间由两个半份空间组成,边缘只有一个半份,所以中间空隙通常是边缘的两倍。
把 gap 当成同一件事
gap 是指定的最小固定间隔,justify-content 分配余量;两者可以同时存在,最终相邻距离会叠加。
试着用自己的话回答

面试官还会怎么问?

只有一个项目时两者如何表现?

space-between 没有内部空隙可分配,项目在主轴起始侧;space-around 把余量放到项目两侧,使其居中。

主轴方向反过来,首尾会怎样?

“首”和“尾”指主轴起止端,不固定为左右。row-reverse 会改变它们的物理方向。

为什么写了 space-between 却没有间距?

先检查项目是否增长吃掉余量、容器是否真的有确定的可用主轴空间,以及是否被项目或外边距占满。

从一道题,走向一组知识

把知识连起来

Flex 布局

Flex 项设 margin: auto,为什么能在两个方向居中?

自动外边距优先吸收正余量,可与整组使用 space-between 的效果对比。

Flex 布局

Flex 项的 margin-left: auto 为什么能把它推到右边?

单个项目用自动边距可把空间集中在它前面,不会像 space-between 分散到每个项目之间。

参考资料

  • CSS:Flex 布局参考资料

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

本题目录
  1. 先记住这个答案
  2. 三张卡片的两种间距算法
  3. 余量在项目间或项目周围分配
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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