inline-block元素间空隙是HTML解析器将换行符和空格当作文本节点渲染所致,受父容器font-size影响,可用font-size:0+子元素重设字体、注释法、负margin或flex布局解决。

为什么 inline-block 元素之间总有看不见的空隙
这个间隙不是 bug,是 HTML 解析器把换行符和空格当作文本节点渲染的结果。只要两个 这是最直接、兼容性最好的方案,核心逻辑是让那个“看不见的文本节点”失去排版依据。 这两种方法本质是“躲开”而非“解决”解析逻辑,适合局部微调,不适合通配或维护性要求高的项目。 如果你控制得了父容器显示方式, 真正麻烦的是混合场景:父容器用了 font-size 和 line-height 排版,占位、撑开行高,最终表现为元素间的缝隙。
inline-block 布局的导航栏或图标组横向对不齐,明明设了 width: 100px 却总多出几像素空隙innerHTML = '' 拼接则无此问题font-size 影响:设为 0 可消除,但会连带影响子元素内文字(除非重设)用 font-size: 0 消除间隙但别忘了重置子元素字体
font-size: 0,子元素再单独设需要的字号,比如 font-size: 14px
input、button 或伪元素 ::before/::after,它们可能继承 font-size: 0 导致内容不可见,必须显式重置line-height: 0 —— 它压不住文本节点的基线对齐,空隙仍在.nav { font-size: 0; }
.nav-item { display: inline-block; font-size: 16px; }
用注释或负 margin 绕过 HTML 空白,但各有硬伤
,能彻底消灭空白节点,但让模板难读、IDE 折叠混乱inline-block 元素加 margin-right: -4px,值取决于当前 font-size 和字体,换字体或缩放就失效vertical-align 对齐逻辑,容易引发新错位font-size 随屏幕变化时,-4px 就不再准确flex 替代 inline-block 是更现代的解法
display: flex 几乎零成本解决间隙问题,且天然支持对齐、换行、等分布局。
inline-block + font-size: 0
flex 下 vertical-align 失效,原靠它对齐的逻辑要改用 align-items 或 margin: auto
.nav { display: flex; }
.nav-item { flex: none; }
font-size: 0,但某个子元素又需要继承外部字体设置;或者用了 flex,却要在某几个 item 上强制换行。这时候得手动切开逻辑,而不是指望一个 CSS 规则包打天下。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











