最稳妥做法是用<p>标签包裹语义完整句子块并用CSS控制间距;禁用<br>分段,因无语义且影响可访问性与SEO;段距用margin统一调控,首末段边距归零;中文首行缩进用text-indent: 2em;禁止<p>内嵌套块级元素。

直接用 <p> 标签包裹语义完整的句子块,再靠 CSS 控制间距、缩进和对齐——这是最稳妥、兼容性最好、也最符合现代标准的做法。别指望浏览器默认样式能撑起专业排版,但也不必过度干预。
为什么不能只靠回车或 <br> 分段
浏览器会忽略 HTML 源码里的换行符和多余空格,<br> 只是强制折行,不产生语义分隔。用它“模拟段落”,会导致:屏幕阅读器读不出段落边界;SEO 无法识别内容结构;CSS 的 p + p 选择器失效;移动端缩放时行高错乱。真正需要分段的地方,必须用 <p> 开闭标签成对出现。
margin 是控制段距的唯一合理方式
浏览器给 <p> 默认加了约 1em 的 margin-top 和 margin-bottom,这就是你看到的段间距。调整它只需覆盖 CSS:
- 统一所有段落:
p { margin: 0.8em 0; } - 去掉首段顶边距:
.article p:first-child { margin-top: 0; } - 末段底边距归零:
.article p:last-child { margin-bottom: 0; } - 千万别只设
margin-top——相邻段落的上下边距会叠加,造成双倍空白 -
line-height管的是段内行距,padding是往段落内部“撑”,两者都不该用来制造段与段之间的空隙
中文首行缩进该用 2em 而不是 32px
text-indent: 2em 是推荐写法,因为 em 相对于当前字体大小,缩进始终约等于两个汉字宽度。用户放大字号、切换系统设置或在高 DPI 屏幕上浏览时,它依然准确;而 32px 是固定像素,在 150% 缩放下可能只剩一字符宽,或在小屏设备上过宽。
立即学习“前端免费学习笔记(深入)”;
- 合法写法:
<p style="text-indent: 2em;">正文开始…</p> -
text-indent只作用于首行,不影响后续自动换行,比用padding-left安全得多 - 若设计稿强约束必须用像素,至少配合
font-size一起声明,避免脱节
嵌套错误会让 DOM 结构意外断裂
HTML 规范禁止在 <p> 内嵌套 <div>、<p> 或其他块级元素。浏览器遇到 <p><div>xxx</div></p> 会自动截断,实际解析为:<p></p><div>xxx</div><p></p>。
- 合法子元素只有行内内容:
<strong>、<em>、<code>、<a>等 - 要包裹多段内容,用
<div class="content">或语义化容器如<article>,而不是把多个<p>塞进一个<p> - 地址、作者署名、短标语这类非自然语言段落,不该硬塞进
<p>,改用<footer>、<small>或<address>
真正难的不是写几个 <p>,而是判断哪一段文字算“一个逻辑完整的段落”——它得经得起放大、朗读、爬虫抓取,还得在不同设备上保持呼吸感。这个边界,比代码本身更需要经验来拿捏。



















