margin 是控制 标签段落间距的唯一有效 css 属性,line-height 仅影响段内行距,不改变段落间距离;因外边距合并,相邻 间距取 margin 最大值而非相加,需通过重置 margin 或触发 bfc 实现精确控制。

margin 是控制 <p></p> 标签段落间距的唯一有效 CSS 属性,浏览器默认会给它加上下外边距(margin-top 和 margin-bottom),不是靠 line-height 或 padding。
为什么改了 line-height 段落间距没变?
因为 line-height 只影响段落内部行与行之间的距离,不影响段落与段落之间的空白。常见错觉是“调大 line-height 就能让段落拉开”,实际只是让单个段落变高了,相邻 <p></p> 的上下 margin 依然重叠(发生外边距合并),视觉上间距几乎不变。
如何准确调整段落间距?
直接覆盖默认 margin 值即可,推荐以下方式:
- 统一重置:用
* { margin: 0; padding: 0; }或更稳妥的p { margin: 1em 0; }(1em约等于当前字体大小) - 按需差异化:比如标题后接段落,可写
h2 + p { margin-top: 0.5em; } - 避免用
padding替代margin:它会撑大容器、影响背景色/边框范围,且不参与外边距合并逻辑 - 注意外边距合并:连续多个
<p></p>时,相邻的margin-bottom和margin-top会取较大值,不是相加
不同浏览器默认 margin 值有差异吗?
有,但差别不大:
- Chrome / Firefox / Edge:默认约
1em(通常为 16px,取决于font-size) - Safari 旧版本曾用固定像素值(如
12px),现在也基本对齐em单位 - 移动端 WebView(尤其 Android 4.x)可能忽略
em计算,建议在关键布局中显式声明margin: 16px 0;作兜底
真正容易被忽略的是外边距合并行为——两个 <p></p> 实际间距永远不等于你写的两个 margin 之和,而是最大值。如果需要严格等距,要么加父容器触发 BFC(如 overflow: hidden),要么只设 margin-bottom,其他方向留空。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











