为什么不能标签包含一个tag inside it?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不能标签包含一个tag inside it?相关的知识,希望对你有一定的参考价值。

据我所知,这是对的:

<div>
  <p>some words</p>
</div>

但这是错误的:

<p>
  <div>some words</div>
</p>

第一个可以通过the W3C validator(Xhtml 1.0),但第二个不能。我知道没有人会像第二个那样编写代码。我只是想知道为什么。

那么其他标签的遏制关系呢?

答案

查找允许的包含关系的权威位置是HTML规范。例如,参见http://www.w3.org/TR/html4/sgml/dtd.html。它指定哪些元素是块元素,哪些元素是内联元素。对于这些列表,请搜索标记为“HTML内容模型”的部分。

对于P元素,它指定以下内容,表示P元素仅允许包含内联元素。

<!ELEMENT P - O (%inline;)*            -- paragraph -->

这与http://www.w3.org/TR/html401/struct/text.html#h-9.3.1一致,后者称P元素“不能包含块级元素(包括P本身)。”

另一答案

简而言之,不可能在DOM中的<div>中放置<p>元素,因为开放的<div>标签将自动关闭<p>元素。

另一答案

根据HTML5,content model元素的divflow content

文档和应用程序体中使用的大多数元素都被归类为流内容。

这包括p元素,其中can only be used预计flow content

因此,div元素可以包含p元素。


然而,content model元素的pPhrasing content

短语内容是文档的文本,以及在段落内标记该文本的元素。 phrasing content的运行形成paragraphs

这不包括div元素,can only be used预计flow content

因此,p元素不能包含div元素。

由于当end tag元素紧跟一个p元素(以及其他)时,可以省略p元素的div,以下

<p>
  <div>some words</div>
</p>

被解析为

<p></p>
<div>some words</div>
</p>

而最后一个</p>是一个错误。

另一答案

在X HTML之后,约定已经改变,现在它是XML和HTML的约定的混合,因此这就是为什么第二种方法是错误的并且W3C验证器接受根据标准和约定的正确的东西。

另一答案

因为div标签的优先级高于p标签。 p标记表示段落标记,而div标记表示文档标记。

您可以在文档标记中编写许多段落,但不能在段落中编写文档。与DOC文件相同。

以上是关于为什么不能标签包含一个tag inside it?的主要内容,如果未能解决你的问题,请参考以下文章

LAST_VALUE with IF statement inside not backfill it's partition --> 在选择每个分区的第一行时丢失最后一个值(BigQuery/

page-break-inside:避免 - 不能在 Chrome 中工作

Actionscript/flex3:转义 XML 特殊字符,如 <、>、" 和 ' inside/within 标签内容

python css盒子型

标签分类与元素转换

AsyncDisplayKit技术分析