为什么在HTML中块级元素和内联元素之间存在功能上的差异?

为什么在HTML中块级元素和内联元素之间存在功能上的差异?,html,web-standards,Html,Web Standards,注意:我不是在谈论显示器-我理解为什么它们有不同的默认值。我说的是块和内联元素之间的功能差异,特别是在嵌套方面 我一次又一次地被告知,HTML是关于描述内容、事物的用途和性质,而不是它们的外观(除了与标记相关联的默认样式元素之外,这些元素是可以更改的) 因此,似乎“块”级标记和“内联”级标记之间的划分(不是这些标记的显示,而是这些标记中固有的差异)是任意的,这使得许多新手甚至经验丰富的页面设计师感到困惑和复杂。。。似乎违背了原则,如果你愿意的话。这种行为似乎应该受到风格上的控制,而不是作为块的内

注意:我不是在谈论显示器-我理解为什么它们有不同的默认值。我说的是块和内联元素之间的功能差异,特别是在嵌套方面

我一次又一次地被告知,HTML是关于描述内容、事物的用途和性质,而不是它们的外观(除了与标记相关联的默认样式元素之外,这些元素是可以更改的)

因此,似乎“块”级标记和“内联”级标记之间的划分(不是这些标记的显示,而是这些标记中固有的差异)是任意的,这使得许多新手甚至经验丰富的页面设计师感到困惑和复杂。。。似乎违背了原则,如果你愿意的话。这种行为似乎应该受到风格上的控制,而不是作为块的内置元素存在。在某些方面,它是由风格控制的——我们都知道CSS可以使跨度看起来像div,反之亦然

那么,在块和内联线之间进行功能区分有什么意义呢?为什么它们不像其他嵌套元素?为什么不是所有的东西都是一个带有“inline”元素的“block”简单地设置为“display:inline”?这仅仅是为了,比方说,向后兼容性,还是这个看似武断的划分有我没有看到的好处

注意,作为一个社区维基问题,这可能会更好,因为它不太可能有一个明确的答案,但我不太清楚细节

例如,据我所知,以下内容是无效的html:

<label style="display:block">
 <h4>Name</h4>
 <span class='sub'>Whether legal, pseudonymous, or made up</span>
 <input id="name"></input>
</label>

名称
无论是合法的、假名的还是虚构的
为什么?

为什么不是所有的东西都是一个带有“inline”元素的“block”简单地设置为“display:inline”

嗯,差不多是这样;正好相反。相反,所有内容都是“内联”的,“块”元素设置为“display:block”

但如果您创建的每个页面都需要告诉它
div
标记应该被视为块元素,那么这将非常烦人。因此,默认样式是假定的,最好在

为什么不是所有的东西都是一个带有“inline”元素的“block”简单地设置为“display:inline”

嗯,差不多是这样;正好相反。相反,所有内容都是“内联”的,“块”元素设置为“display:block”


但如果您创建的每个页面都需要告诉它
div
标记应该被视为块元素,那么这将非常烦人。因此,默认样式是假定的,最好在

中说明,也许这就是为什么HTML5中不再存在这种区别的原因。HTML5-总是寻找新的方式让我既惊讶又高兴。我肯定要更深入地研究这个问题。我认为你的问题最好问一下,为什么块和内联之间的区别被认为如此重要。例如,浮动元素和非浮动元素之间的区别不成问题,因为没有人将其重要性夸大。。。但是为什么
显示的不同设置被认为是如何描述元素的决定性因素呢?据我记忆所及,也没有规则规定不能将div放在float中,反之亦然。@GlyphGryph抱歉,直到我删除它之后才看到你对我答案的评论。我这样做是在重新阅读了你的帖子并对自己说“不,一定有比这更好的解释。”因此我删除了它,希望能从比我更有经验的人那里得到更好的答案\也许这就是为什么这种区别在HTML5中不再存在的原因。HTML5——总是在寻找新的方式让我既惊讶又高兴。我肯定要更深入地研究这个问题。我认为你的问题最好问一下,为什么块和内联之间的区别被认为如此重要。例如,浮动元素和非浮动元素之间的区别不成问题,因为没有人将其重要性夸大。。。但是为什么
显示的不同设置被认为是如何描述元素的决定性因素呢?据我记忆所及,也没有规则规定不能将div放在float中,反之亦然。@GlyphGryph抱歉,直到我删除它之后才看到你对我答案的评论。我这样做是在重新阅读了你的帖子并对自己说“不,一定有比这更好的解释。”因此我删除了它,希望能从比我更有经验的人那里得到更好的答案\