justify-content: space-between是首尾贴边、中间平分,space-around是每个元素两侧等距留白、相邻元素间距为边距两倍;区别本质在于space-between在n−1个间隙均分剩余空间,space-around在n+1个间隙均分。
直接说结论:用 justify-content: space-between 是“首尾贴边、中间平分”,用 justify-content: space-around 是“每个元素自带等量呼吸空间,相邻元素间空隙翻倍”。选哪个不看名字,要看你是否允许首尾元素紧贴容器边缘。
space-between 却没看到间隙?不是 CSS 写错了,而是 Flex 主轴根本没“腾出空间”来分——常见卡点有:
display: flex 没生效(比如父容器被 display: inline 覆盖,或子元素是浮动/绝对定位)flex-wrap: wrap 会直接让 space-between 失效)display: none 或空 <div></div>,它们仍参与 justify-content 计算flex-shrink: 0 且内容撑满,浏览器无法压缩留白space-between 和 space-around 的数学差异假设容器剩余空白为 Remaining Space,子元素数量为 n:
space-between:只在 n−1 个“元素之间”分空白 → 每个间隙 = Remaining Space / (n − 1);首尾无间隙space-around:每个元素“左右各分一份”,共 n 份 → 单侧间隙 = Remaining Space / (n + 1);相邻元素间实际是两份,所以视觉上是单侧的 2 倍例如 3 个子元素时:space-between 产生 2 个等距间隙;space-around 产生 4 段间隙(首、中、中、尾),但首尾各占 1 份,中间两个各占 2 份。
立即学习“前端免费学习笔记(深入)”;
space-around 而不是 space-between?关键看设计意图是否需要“四周留白一致”:
space-around
space-between
space-around 更容错,不易因宽度突变导致布局跳动flex-direction: column 垂直排列时,space-around 的顶部/底部留白更柔和,space-between 容易让首尾项“顶天立地”显得压迫真正容易被忽略的是:当子元素用了 margin,它会和 justify-content 的间隙叠加——尤其 space-around 下,元素自带两侧空白,再加 margin 就会超预期撑开。调试时先清掉 margin 再判断效果。