据我所知,这是对的:
<div>
<p>some words</p>
</div>
Run Code Online (Sandbox Code Playgroud)
但这是错误的:
<p>
<div>some words</div>
</p>
Run Code Online (Sandbox Code Playgroud)
第一个可以通过w3c验证器(xhtml 1.0),但第二个不能.我知道没有人会像第二个那样编写代码.我只是想知道为什么.那么其他标签的遏制关系呢?
小智 192
查找允许的包含关系的权威位置是HTML规范.例如,参见http://www.w3.org/TR/html4/sgml/dtd.html.它指定哪些元素是块元素,哪些元素是内联元素.对于这些列表,请搜索标记为"HTML内容模型"的部分.
对于P元素,它指定以下内容,表示P元素仅允许包含内联元素.
<!ELEMENT P - O (%inline;)* -- paragraph -->
Run Code Online (Sandbox Code Playgroud)
这与http://www.w3.org/TR/html401/struct/text.html#h-9.3.1一致,它说P元素"不能包含块级元素(包括P本身)."
def*_*u1t 66
简而言之,不可能在DOM中的<div>元素内部放置元素<p>,因为开始<div>标记将自动关闭<p>元素.
Ori*_*iol 34
文档和应用程序体中使用的大多数元素都被归类为流内容.
因此,div元素可以包含p元素.
因此,p元素不能包含div元素.
由于结束标记的p可以当被省略的元件p元件之后紧接着一个div元件(除了别的以外),以下
<p>
<div>some words</div>
</p>
Run Code Online (Sandbox Code Playgroud)
被解析为
<p></p>
<div>some words</div>
</p>
Run Code Online (Sandbox Code Playgroud)
最后</p>是一个错误.