Html 为什么可以';t关闭</p>;如果父元素是<;a>;元素?

Html 为什么可以';t关闭</p>;如果父元素是<;a>;元素?,html,Html,根据HTML5规范: 如果p元素立即被删除,则可以省略p元素的结束标记 后跟地址、文章、旁白、区块引文、目录、部门、dl、, 字段集、页脚、表单、h1、h2、h3、h4、h5、h6、页眉、hgroup、hr、, 菜单、导航、ol、p、pre、区段、表格或ul、元素,或如果有 父元素中没有更多内容,父元素不是 元素。 [我的重点] 父元素不是标记的最后一点是什么?为什么允许这样做: <div> <p>text... </div> 文本。。。 但这并不是:

根据HTML5规范:

如果p元素立即被删除,则可以省略p元素的结束标记 后跟地址、文章、旁白、区块引文、目录、部门、dl、, 字段集、页脚、表单、h1、h2、h3、h4、h5、h6、页眉、hgroup、hr、, 菜单、导航、ol、p、pre、区段、表格或ul、元素,或如果有 父元素中没有更多内容,父元素不是 元素。

[我的重点]

父元素不是
标记的最后一点是什么?为什么允许这样做:

<div>
<p>text...
</div>

文本。。。
但这并不是:

<a>
<p>text...
</a>

,为什么会出现异常?

因为当
标记结束时总是结束
标记是没有意义的。在
的情况下,如果您要关闭
,几乎可以肯定您也想关闭
,但是对于
来说,这是不一样的。该超链接可能会延续到下一个段落

可能是不允许的,因为w3是如何定义段落的:

当谈到列表如何不能位于段落内时,请:

用HTML术语来说,段落不是逻辑概念,而是结构概念 一个。在上面这个奇妙的例子中,实际上有五个 本规范定义的段落:列表前一段,列表后一段 对于每个项目符号,以及列表后的一个项目符号


在我看来,W3希望段落是文本的段落,而不是巨大的超链接,并且它们做了一些长度来确保这一点。

我想这是因为
元素是一个内联元素

而列表中的所有其他元素(地址、文章、旁白、blockquote、dir、div等)都是块级别,因此它们可以关闭其他元素的作用域,而内联元素则不是这样


由于
元素是唯一允许将块级元素放入的元素(根据您提供的链接)-这就是为什么他们在规范中特别提到此元素的原因。

。。。请注意,我可能看错了。一些示例标记可能会有所帮助。@BoltClock除非您明确关闭超链接,否则超链接将继续到下一段:啊,但问题是当父对象是
A
时为什么需要关闭

标记,而不是当子对象是
p
时为什么需要关闭
@BoltClock是的,我认为这是给用户一个选择。用户可能希望保持段落处于打开状态。强迫他们关闭自己的
标签会让他们自己做出决定,而不是替他们做决定。TL;DR:结束一个锚并不意味着我想结束我的段落实际上,
a
元素有一个-你是否可以将某个元素放在它里面取决于它最近的非透明祖先是否允许这样一个元素放在它里面,所以你可能无法在所有情况下都将某个元素放在
a
中。换言之,
a
本身对它内部可以包含哪些元素没有任何自由或限制。从技术上讲,这是因为
而不是因为它是一个内联元素。因此,例如
具有与
等效的解析器行为,但
没有。但正如您所说,在具有该解析器行为的元素中,只有
允许包含