<br>仅适用于同一段内强制换行,如地址、诗行;用其替代<p>会损害可访问性、样式控制与SEO。

不用 <br> 换行代替 <p>,这不是省事,是埋坑。
什么时候 <br> 真的合适
<br> 只该用于「同一段文本内强制换行」的语义场景,比如地址、诗行、歌词——这些内容逻辑上属于一个自然段,但排版需要折行。
- ✅ 正确:地址字段中
上海市<br>浦东新区<br>张江路123号 - ✅ 正确:诗歌中
床前明月光<br>疑是地上霜 - ❌ 错误:用
<br>分隔两段独立内容,如「欢迎使用系统<br>请先登录账号」——这其实是两个段落,应为两个<p>
<p> 被跳过的真实原因
很多人弃用 <p> 是因为默认上下边距太大、或嵌套后样式混乱。这不是 <p> 的错,而是没处理好 CSS 重置或继承。
- 浏览器对
<p>有默认margin-top和margin-bottom(通常 1em),直接删掉就行:p { margin: 0; } - 在
<div>或<section>里嵌套<p>不会出问题,但若父容器设了display: flex或display: grid,<p>的 margin 可能被压缩或忽略——这时该调align-self或用margin显式控制,而不是砍掉语义 - 用
<br>堆出来的结构,后续加间距、响应式断点、屏幕阅读器支持都会变麻烦
用 <br> 替代 <p> 会触发哪些实际问题
表面看代码少几行,实际在可访问性、维护性和样式扩展上付出隐性成本。
- 屏幕阅读器把连续
<br>当作同一段朗读,不会停顿,用户无法感知段落分隔 - 想给「第二段」加不同字体色?
<br>没法单独选中,只能靠位置伪类(如:nth-of-type()),脆弱且不可靠 - 移动端需要「首段不缩进、其余段缩进 2em」?
<p>可直接写p:not(:first-child) { text-indent: 2em; };<br>只能靠 JS 插入 wrapper,或者改 HTML 结构 - SEO 工具依赖语义标签识别正文结构,纯
<br>堆砌的内容可能被降权或忽略段落逻辑
块级元素不是为了“看起来像段落”而存在,而是为了“表达段落”。省掉一个 <p> 标签,往往意味着你得在 CSS、JS、无障碍属性上补三处逻辑——而且补得还不干净。

















