使用PHP echo为何标签自动闭合?Chrome下代码结构异常咨询
问题原因分析
这事儿其实是浏览器的HTML自动纠错机制搞的鬼,核心原因是你违反了HTML的嵌套规范:
HTML标准里明确规定,<p>标签属于「段落容器」,它只能包含行内元素(比如<span>、普通文本),不能嵌套块级元素——而<h2>正好是块级元素。
当Chrome浏览器解析到你写的<p><h2>...</h2></p>这种无效嵌套时,它会自动修正这个错误结构:
- 先把未闭合的
<p>提前闭合,生成<p></p>; - 正常渲染
<h2>1</h2>; - 最后看到剩下的
</p>标签,浏览器会自动补一个对应的<p>,于是就出现了末尾的<p></p>。
这就是为什么你实际得到的代码里,<h2>被挤到了两个空<p>标签中间。
修复方案
调整你的HTML嵌套结构,不要把块级元素放在<p>里面,比如改成这样:
$i = 1; <div class="sampleNumberIndex"> <h2><?php echo $i; ?></h2> <p><!-- 这里放你的段落内容 --></p> </div>
如果你的需求是让标题和段落关联,完全不需要用<p>包裹<h2>,直接按正确的块级元素顺序排列就可以了,浏览器会正常渲染符合规范的结构。
内容的提问来源于stack exchange,提问作者June
相关产品推荐
相关产品推荐

