p标签默认上下外边距为1em,清除需设margin:0,但须防范外边距合并;只设margin-bottom更稳妥,可避免首尾空白,配合overflow:hidden触发bfc可破合并。

p 标签默认有上下外边距(通常是 1em),不是“行距”,也不是内边距,是浏览器内置样式导致的段落间空隙。直接设 margin: 0 就能清除,但要注意垂直外边距合并(margin collapse)带来的意外效果。
为什么只设 margin-bottom 更稳妥
相邻 p 元素的上下外边距会合并——两个 p 各设 margin-bottom: 16px,实际间距仍是 16px,不是 32px;但如果同时设 margin-top 和 margin-bottom,首段顶部、尾段底部容易多出空白。
- 推荐写法:
p { margin: 0 0 16px 0; }(只设底部边距) - 避免写法:
p { margin: 16px 0; }(首段顶上会空出 16px) - 若父容器需严格控制高度,可加
overflow: hidden或display: flow-root阻止 margin 合并外溢
margin-collapse 导致段落“挤在一起”怎么破
改了 margin-bottom 但视觉上没变化?大概率是 margin 合并没被打破,或者父元素(如 div)本身没有形成块级格式化上下文(BFC)。
- 检查 computed styles 中
margin-top和margin-bottom是否真为 0 或预期值 - 给
p的直接父容器加overflow: hidden是最轻量的 BFC 触发方式 - 旧版 Android WebView 对
em支持不稳定,关键间距建议用像素单位兜底,例如margin-bottom: 16px
别忽略 line-height 和字体大小的影响
清除 margin 后若仍感觉“太松”或“太紧”,问题可能不在外边距,而在行高或字体渲染差异。
-
p默认line-height通常为1.5左右,内容高度会撑开容器;设line-height: 1.3可收紧文本行距 - 移动端小字号下,
line-height: 1.4可能比1.5更易读,但需实测 - 不要依赖
font-size: 0清空间隙——那是针对 inline 元素(如a)的 hack,对p无效且会隐藏文字
真正要清除的是外边距,不是“行距”。line-height 控制的是行内内容高度,margin 控制的是段落之间距离,二者作用域不同,混用容易误判根源。多数情况下,一行 p { margin: 0 0 1rem 0; } 加一个 BFC 容器就足够干净了。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











