代码之家  ›  专栏  ›  技术社区  ›  Eazicoding

为什么在Chrome呈现的HTML代码中,一个<div>标记或<form>标记作为子标记写入一个<p>标记,而不是子标记,而是<p>标记的同级标记[[副本]

  •  1
  • Eazicoding  · 技术社区  · 5 年前

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

    但这是错误的:

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

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

    其他标签的包含关系呢?

    0 回复  |  直到 7 年前
        1
  •  210
  •   Colin Campbell    14 年前

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

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

    这与 http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

        2
  •  71
  •   defau1t    14 年前

    <div> a中的元素 <p> 在DOM中,因为 <部门> 标签将自动关闭 < 元素。

        3
  •  42
  •   Nils Lindemann    7 年前

    根据HTML5 content model div 元素是 flow content

    包括 p can only be used 哪里 流量含量 是预期的。

    部门 元素可以包含 P


    然而 内容模型 P 元素是 Phrasing content

    短语内容是文档的文本,以及 phrasing content 形式 paragraphs .

    这还不包括 元素,其中 只能使用 哪里 是预期的。

    因此, P 元素不能包含 元素。

    自从 end tag P 当 元素后面紧跟着 部门 元素(除其他外),如下

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

    解析为

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

    最后一个呢 </p>

        4
  •  -1
  •   Peter Mortensen Pieter Jan Bonestroo    7 年前

    在xhtml之后,约定被改变了,现在它是XML和HTML的混合约定,所以这就是为什么第二种方法是错误的,W3C验证器根据标准和约定接受正确的东西。

        5
  •  -7
  •   Peter Mortensen Pieter Jan Bonestroo    7 年前

    因为 div 标记的优先级高于 p P tag表示段落标记,而 部门

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