p标签嵌套问题
HTML规范不允许p标签互相嵌套,但如果就这么干了呢?
HTML规范: HTML规范明确规定,
<p>
标签作为块级元素,不能嵌套其他块级元素,包括自身。这是为了保证HTML文档的结构清晰,便于浏览器解析和渲染。浏览器行为: 浏览器在解析HTML时,会尽力遵循HTML规范。当遇到嵌套的
<p>
标签时,通常会忽略内层的<p>
标签,将所有内容视为同一个段落。这是为了修正开发者可能犯下的错误,确保页面正常显示。
碰到下面这种不规范的html文档,对于figure标签跟p标签的关系,在浏览器中进行debug你看到的是第2种所示的兄弟节点关系,但通过bs解析出来的树形节点依旧保留了第1种的结构——figure依旧是嵌套在p中的。
<!--1:原文档不规范的p标签嵌套-->
<p><p><p>text<figure class="img1"></figure><figure class="img2"></figure></p></p></p>
<!--2:浏览器渲染出来的样子-->
<p></p><p></p><p>text</p><figure class="img1"></figure><figure class="img2"></figure><p></p><p></p><p></p>
当你在bs中反复怀疑为什么拿不到某个节点的时候,还会有这样的坑……