是html5中明确定义的块级、可中断、自动闭合标签,其闭合由解析器状态机决定,非括号配对;遇新块级元素或即隐式闭合,影响seo、无障碍及dom结构。

浏览器解析 <p></p> 时根本不看“段落”这个词
浏览器不理解“段落”这个语义概念,它只按 HTML 标准执行解析规则:<p></p> 是一个**被明确定义为“块级、可中断、自动闭合”的短标签(void-like but not void)**。遇到 <p></p> 开始标签时,解析器会立即关闭当前打开的 <p></p>(如果存在),再新建一个;遇到
<div>、<code><h2></h2>、<section></section>)时,也会隐式闭合当前 <p></p>。这种行为写死在 HTML5 解析算法里,和 CSS 无关,也和是否加了 margin 无关。
常见错误现象:
- 写
<p>第一段</p> <p>第二段</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5806" title="html-deploy"><img src="https://img.php.cn/upload/skill/000/000/081/179066538882434.jpg" alt="html-deploy" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill5806" title="html-deploy" class="overflowclass">html-deploy</a> <p class="overflowclass">使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。</p> </div> <a rel="nofollow" href="/xiazai/skill5806" title="html-deploy" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>—— 第二个<p></p>会触发第一个自动闭合,最终 DOM 中出现两个独立<p></p>,但结构已断裂 - 在
<p></p>里嵌套<div> —— 解析器会立刻在 <code><div> 前闭合 <code><p></p>,导致 DOM 层级错乱 - 用
<br>替代<p></p>分段 —— 语义丢失,读屏器无法识别段落边界,SEO 无法提取段落主题 - 下一个兄弟节点是
<h1></h1>–<h6></h6>、<div>、<code><section></section>、<article></article>、<aside></aside>等块容器 - 遇到
显式结束标签 - 到达
<p></p> 的闭合时机由解析器状态决定,不是靠配对
HTML 解析器是状态机,不是括号匹配器。它维护一个“开放元素栈”,当遇到新块级元素或特定结束条件时,就从栈顶开始弹出,直到遇到允许嵌套的父元素为止。对 <p></p> 来说,以下情况都会触发自动闭合:










