据我所知,这是正确的:
<div>
<p>some words</p>
</div>
但这是错误的:
<p>
<div>some words</div>
</p>
第一个可以通过W3C验证器(XHTML 1.0),但是第二个则不能。我知道没有人会像第二个那样编写代码。我只想知道为什么。
那其他标签的收容关系又如何呢?
p
是一个与块级元素无关的元素。div
也是一个,并允许其他块。
据我所知,这是正确的:
<div>
<p>some words</p>
</div>
但这是错误的:
<p>
<div>some words</div>
</p>
第一个可以通过W3C验证器(XHTML 1.0),但是第二个则不能。我知道没有人会像第二个那样编写代码。我只想知道为什么。
那其他标签的收容关系又如何呢?
p
是一个与块级元素无关的元素。div
也是一个,并允许其他块。
Answers:
查找允许的容纳关系的权威场所是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本身)”。
%inline
上述含义相同。另请参阅Oriol的答案。
简而言之,不可能将<div>
元素放置<p>
在DOM中的a 内,因为开始<div>
标记会自动关闭该<p>
元素。
div
元素放置p
在DOM中的内,例如myP.appendChild(myDiv)
。但是HTML解析器不会这样做。
文档和应用程序主体中使用的大多数元素都归类为流内容。
因此,div
元素可以包含p
元素。
因此,p
元素不能包含div
元素。
由于在元素后紧跟一个元素(以及其他元素)时,可以省略元素的end标签。p
p
div
<p>
<div>some words</div>
</p>
被解析为
<p></p>
<div>some words</div>
</p>
最后</p>
是一个错误。
div as inline in CSS
不使用它,因为新的解析结构<p>Text</p> <div>some words</div> <p></p>
对我的理解正确吗?
在X HTML之后,约定已被更改,现在它是XML和HTML约定的混合体,因此这就是第二种方法是错误的,并且W3C验证程序接受根据标准和约定的正确内容的原因。
因为div
标签的优先级高于p
标签。该p
标签代表一个段落标签,而div
标签代表一个文档标签。
您可以在document标签中写很多段落,但是不能在段落中写文档。与DOC文件相同。
<doc>
:D
<p>
是一个块级元素,并且(被假定)用于显示文本,所以它不允许在其中包含其他块级元素,而只允许内联元素(例如<span>
和)<strong>
。