用 margin 控制段落上下间距最可靠,因其直接修改浏览器默认的 margin-top 和 margin-bottom,通用性强、不影响行高与字体渲染,且可单独设置;line-height 仅影响段内行距,gap 适用于 Flex/Grid 容器但不兼容 IE,而 或空 则破坏语义且不可控。
margin 控制段落上下间距最可靠HTML 本身没有“段落间距”这个独立属性, 标签的默认间距来自浏览器内置样式表,本质就是 margin-top 和 margin-bottom。直接改这两个值,是最通用、最可控的方式。
lin
e-height)或字体渲染padding 替代:它会撑大 元素自身盒模型,可能意外触发滚动条或遮挡背景 p {
margin-top: 16px;
margin-bottom: 24px;
}
line-height 只调行内间距,不是段落间距很多人误以为调 line-height 能拉开段落距离,其实它只作用于同一 内部的行与行之间。两个相邻 的距离,仍由它们各自的 margin-bottom 和 margin-top 决定(且会发生外边距合并)。
line-height: 2 后,段内文字行距变大,但段与段之间视觉空隙几乎不变margin 和 line-height,后者不影响前者计算 的 margin-bottom: 20px 和 margin-top: 20px 实际只显示 20px,不是 40pxgap 配合 Flex/Grid 容器统一管理多个段落当多个 被包裹在 display: flex 或 display: grid 的容器中时,可以用 gap 属性一次性控制它们之间的间距,绕过外边距合并问题,也更语义清晰。
gap 值不会和子元素的 margin 叠加,行为可预测margin 方案 .paragraphs-container {
display: flex;
flex-direction: column;
gap: 28px;
}
或空 手动加空行这类写法看似简单,实则破坏结构语义、增加维护成本,且在不同缩放比例或屏幕尺寸下表现不稳定。
是换行符,不是间距控制工具;连续多个
会被读屏软件误读为内容分隔 会产生不可控的默认 margin,还可能被 CSS 重置规则意外影响margin 或 gap 可配合媒体查询动态调整margin 就能干净解决;复杂布局再考虑 gap。最容易被忽略的是外边距合并行为——它会让两个段落的间距“看起来没生效”,调试时先检查 computed styles 里的 actual margin 值,而不是只看写的 CSS。