为什么<hr>、<br>、<em>元素属于html中的流内容?

Why do <hr>, <br> and <em> elements belong to flow content in html?

我一直在阅读来自 MDN 的内容类别。在 Flow Content 部分,他们说:

Elements belonging to the flow content category typically contain text or embedded content.

因此,Flow 内容元素应该包含 某些内容。现在我们知道 hrbr 元素是空元素,也就是说它们不包含任何内容。所以问题是:

我也很困惑流量内容到底是什么?我一直在阅读有关此的内容,例如措辞和流内容之间的区别。据我所知,流内容似乎对应于块级元素,而短语内容似乎对应于内联元素。更准确地说,似乎 Flow Content 应该是概述整个文档的 结构内容 。例如,section元素,div元素,headerfooterarticle等。流内容似乎是某种容器元素,或更高级别元素,如 p 元素,其中包含文档的较低级别组件(如文本、图像和超链接等)。

看流量内容元素列表,好像除了meta content elements之外的每个元素都属于流量内容。

您在引用的部分中忽略了通常 一词。它们中的大多数确实包含文本,但并非所有都包含文本。其中一些,例如您指出的 <br><hr> 元素不包含任何内容(因此不是 typical 流内容元素)。

HTML5 规范 defines flow content 说:

Most elements that are used in the body of documents and applications are categorized as flow content.

流内容包含元数据、标题、分段元素、交互元素、措辞和嵌入内容。它不仅限于包含文本的元素。

我的看法是,流内容可以是 <body> 元素的 child;它是 body.

中流动的内容

您可以在 <select> 元素旁边有一个 <div> 元素,而 <select> 元素又可以在 <br> 元素旁边,而 <br> 元素又可以在任何其他 [=42] 元素旁边=]流内容元素。您可以说这些元素 流动 彼此。使用 "a steady, continuous stream or supply of something" 的定义(牛津英语词典中的 the second noun),我们可以说这些是 HTML 元素的连续不间断流。

另一方面,<option><optgroup><li> 元素不是流内容,同样不允许是 [=] 的 child 12=] 元素。 <hr> 元素旁边不能有 <optgroup> 元素(因为 <optgroup> 元素必须是 <select> 元素的 child)——我们可以因此说这些元素不随 <body>.

的 children 流动

两个问题的答案是,任何属于短语元素的元素都必然被视为流内容,因为其内容模型为 "Flow content" 的元素也可以直接包含短语元素。

至于 <hr>,它是流程元素而 不是 短语元素的原因是,根据其定义,

The hr element represents a paragraph-level thematic break

因为它旨在用于划分一个部分中的段落,在 HTML 中由流元素 <p> 表示,所以 <hr> 是一个流是有意义的元素而不是短语元素。

两个元素的内容模型无关。此处相关的是其 parent 元素的内容模型。 MDN 给出的声明仅供参考,并不意味着 de jure;实际上,该声明没有出现在 W3C HTML5 或 WHATWG HTML.