html - 嵌套 <p> 行不通,而嵌套 <div> 行吗?

标签 html nested paragraph

我一般不会嵌套<p>像这样:

<p>The following:
    <p>one</p>
    <p>two</p>
</p>

我将使用 <div> 像那样嵌套反而。但是今天我用了<p>但似乎 Emacs 和 Google Chrome 都会考虑外部 <p>一看到新的 <p> 就关闭开始了。 (DOCTYPE 是 HTML 4.01 Strict)。

我以为<p>不超过 <div>但只是有一些预定义的边距和填充,但是<p>是真的吗?不能嵌套?如果可以,哪条规则说它不能?

最佳答案

因为段落就是段落.. 这就是 HTML 的定义方式(而 HTML 不是 XML)。

任何<p> (或其他 block 级元素)将隐式关闭任何打开的<p> .

根据 9.3.1 Paragraphs: the P element HTML 4.01 规范:

The P element represents a paragraph. It cannot contain block-level elements (including P itself).


请注意,这是 HTML 的解析方式,即使是 <div>会隐含地关闭该段落!

然而,一个<span>display:block; 不会关闭 <p>作为 <span> 不是 block 级元素。

也就是说,在 HTML 处理的这个阶段,CSS 是无关的,并且在确定元素是否是 block 时,CSS 与 DOM/解析器无关水平元素与否。考虑动态应用 CSS 或通过尚未加载的样式表应用 CSS 的情况:应用的 CSS 不会改变 DOM。


虽然 HTML5(工作草案)规范不包括 HTML4 规范中的上述语言,但它确实继续将段落定义为 phasing content容器并且还有一个 section on paragraphs .

List of HTML5 elements that can be nested inside P element? 的公认答案说<p>元素不能嵌套在 HTML5 中。文档中的关键短语是:“措辞内容[不包括 <p> 元素] 的运行形成段落”。此外,试图在许多方面向后兼容的 HTML5 在 "Restrictions on content models and on attribute values" 上有一个基本原理。 :

Certain elements are parsed in somewhat eccentric ways (typically for historical reasons), and their content model restrictions are intended to avoid exposing the author to these issues.

此行为引用自 a HTML5 WG wiki entry on flow content :

HTML5's restrictions on nesting of p elements and on what p elements may contain, are due to, quote: “peculiarities of the parser” that causes p to be auto-closed ..

关于html - 嵌套 <p> 行不通,而嵌套 <div> 行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015804/

相关文章:

来自两个不同表的mysql时间总和

jQuery - 当一个段落已经突出显示时,如何防止第二段突出显示 ("clicked")

javascript - 大纲在 Firefox 上无法正常工作

c# - 如果搜索框位于 _SiteLayout 页面(在标题 DIV 中),如何将搜索结果返回给用户

matlab - 我将如何在 MATLAB 中进行嵌套排序?

c++ - 如何从主类之外的嵌套类编写实际代码

html - 当浏览器窗口较小时,导航栏底部 View 被截断

html - 隐藏在幻灯片后面的下拉菜单

html - 缩进段落的第一行,但前提是它需要多行

html - 带段落 CSS 的自定义有序列表