是语义化段落容器,不可嵌套;仅用于同一语义单元内换行,表示主题中断;表重要性,仅视觉加粗;html合并空白符,需用或 等精准控制。

<p></p> 标签不是“换行工具”,而是语义化的段落容器;用错它,SEO 和屏幕阅读器都会出问题。
为什么 <p></p> 不能嵌套 <p></p>
浏览器会自动修正非法嵌套:遇到 <p></p>
<p>内容</p>
<p></p>,第二个变成独立段落。这不是容错,是纠错——意味着你写的结构和实际渲染不一致。
常见错误现象:
- 编辑器里写两层
<p></p>,预览时文字突然断开、间距异常 - 用 CSS 给外层
<p></p>设margin,结果只影响第一行
正确做法:
- 段落内需要强调?用
<strong></strong>或<em></em> - 需要分块?用
<div> 或语义化容器如 <code><article></article>,别硬套<p></p> - 纯视觉分隔?优先用 CSS 的
padding/border,而不是靠多加标签 - 用
<br>实现段落间距 → 应该改<p></p>的margin - 用
<hr>做按钮下划线或卡片分割线 → 该用border-bottom - 在
<pre class="brush:php;toolbar:false;"></pre>里再加<br>→<pre class="brush:php;toolbar:false;"></pre>本身保留换行,多余 - 用户开启“高对比度模式”时,
<strong></strong>可能被系统额外标记(如加背景色),<b></b>不会 - 翻译工具识别
<strong></strong>后,可能对对应词做术语强化处理 - CSS 重置时,
b默认样式可能被清掉,但strong更常被保留加粗行为 -
<pre class="brush:php;toolbar:false;"></pre>:原样保留所有空白和换行,配合white-space: pre使用最稳 -
:手动插入不可断行空格,适合单位前空格(如“100 px”) -
text-indent:首行缩进用 CSS,别用全角空格或多个
<br> 和 <hr> 的使用边界在哪
<br> 是唯一合法的强制换行手段,但它只该用于“同一语义单元内的分行”,比如地址、诗歌、签名档。滥用会导致内容不可选、不可复制、不可翻译。
<hr> 不是装饰线,而是语义上的“主题中断”。W3C 明确说它表示段落级内容的分隔,不是视觉分割线。
容易踩的坑:
<strong></strong> 和 <b></b> 看似一样,但浏览器处理逻辑不同
<strong></strong> 是语义标签,表示内容重要性提升,屏幕阅读器会加重语气读出;<b></b> 仅表示“视觉加粗”,无语义权重。搜索引擎、无障碍工具都依赖前者。
参数差异很小,但影响真实场景:
建议:只要你想表达“这句话关键”,就用 <strong></strong>;只有当你明确只要加粗、且不希望传递任何语义时,才考虑 <b></b>。
中文排版中容易被忽略的空格与换行处理
HTML 默认合并连续空白符(空格、制表、换行),所以代码里写十行缩进,页面上还是一个空格。这不是 bug,是规范。
真正需要保留格式的场景(如代码块、诗歌、日志输出),必须用:
性能提示:大量使用 <pre class="brush:php;toolbar:false;"></pre> 且内容动态生成时,注意其内部文本不会被浏览器自动折行,长字符串可能撑破容器——得配 word-break: break-word。











