仅用于无语义的强制换行,如诗歌、地址;才是语义化段落标签,自带margin和无障碍支持,禁止用多个替代段落分隔。

br 是换行,不是段落分隔符
<br> 只做视觉上的强制换行,不带语义。它不会产生上下外边距,也不会在可访问性树中创建新的内容单元。屏幕阅读器通常会忽略它,或仅读作“换行”,对理解内容结构毫无帮助。
常见错误现象:用多个 <br> 模拟段落间距,比如写成:
<p>第一段<br><br>第二段</p>
这会导致语义混乱、打印样式异常、响应式布局错位,且无法通过 CSS 精确控制段落间距。
p 标签自带默认 margin 和语义含义
<p></p> 表示一个完整的段落,是语义化 HTML 的基础块级元素。浏览器默认会给它上下 margin(通常是 1em),且它天然支持无障碍导航(例如屏幕阅读器可逐段跳转)。
使用场景包括:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 正文文字的自然分段
- 需要被搜索引擎或爬虫识别为独立内容单元时
- 配合 CSS 的
text-align、line-height、margin做统一排版时
什么时候该用 br,什么时候必须用 p
真需要 <br> 的情况极少,典型包括:
- 诗歌、地址、歌词等需保留特定换行但又不属于新段落的文本(例如:
<p>北京市朝阳区<br>建国路87号</p>
) - 表单内行内提示文字换行(但更推荐用
<div> 或 Flex 布局替代) <p>以下情况必须用 <code><p></p>:- 文章正文、说明文字、用户协议条款
- 任何你希望被当作“一段完整意思”来处理的内容
- SEO 敏感页面中的主体文字
兼容性和样式控制差异明显
<br>几乎无兼容性问题,但它不可选中、不可聚焦、不能设置 padding/margin/border,也不能用伪元素修饰。<p></p>则完全支持所有 CSS 块级样式,包括:-
margin控制段间距(注意垂直 margin 会折叠) -
padding控制内边距 -
::first-line修饰首行 - 媒体查询中单独调整移动端段落行高
容易被忽略的一点:某些 CMS 或富文本编辑器会把回车自动转成
<br>,而不是<p></p>—— 这会让输出 HTML 语义残缺,后续样式和可访问性都受影响。










