浏览器解析HTML和HTML';s形(句法)

浏览器解析HTML和HTML';s形(句法),html,Html,今天有人试图通过挑战我对HTML的总体知识来骚扰和贬低我,而我从来没有声称拥有HTML,因为我才刚刚开始学习它。她问了我以下两个问题: 问题1。如果我创建了一个html页面,其中只有一个字符串,而没有在其中写入任何html标记(没有正文、没有html、没有doctype),那么为什么浏览器仍然呈现它并显示字符串,就像它是一个段落一样 对此,我使用了我的最佳猜测,浏览器仍然能够将其显示为一个段落,因为这是它的最佳猜测,它通过假设这是作者想要的,从而“放置”这些标记来弥补丢失的标记,即使我们从未手动

今天有人试图通过挑战我对HTML的总体知识来骚扰和贬低我,而我从来没有声称拥有HTML,因为我才刚刚开始学习它。她问了我以下两个问题:

问题1。如果我创建了一个html页面,其中只有一个字符串,而没有在其中写入任何html标记(没有正文、没有html、没有doctype),那么为什么浏览器仍然呈现它并显示字符串,就像它是一个段落一样

对此,我使用了我的最佳猜测,浏览器仍然能够将其显示为一个段落,因为这是它的最佳猜测,它通过假设这是作者想要的,从而“放置”这些标记来弥补丢失的标记,即使我们从未手动编写过这些标记

问题2。在上面的示例中,如果我在html源代码的不同行中编写了多个字符串,浏览器仍将它们显示为一行文本

同样,我使用了我的最佳猜测,并得出结论,HTML是一种自由形式的语言,因此它不会关心源代码中有多少空格或缩进

然而,她似乎并不高兴。我的答案错了吗?如果是,那么他们是完全错了还是部分错了?这些问题的正确答案是什么

感谢您阅读并耐心阅读本说明。

Q1:

我认为浏览器不会将单个字符串显示为段落。原因是,正如您所说,单独行上的任何后续字符串都在同一块中呈现。您可以使用chrome web检查器(CTRL+SHIFT+I)检查这一点。浏览器将显示任何不是标记或脚本/样式表(或doctype)的内容

问题2:

HTML对换行符不敏感

如果您仍然不满意,请检查规格:

Q1:

我认为浏览器不会将单个字符串显示为段落。原因是,正如您所说,单独行上的任何后续字符串都在同一块中呈现。您可以使用chrome web检查器(CTRL+SHIFT+I)检查这一点。浏览器将显示任何不是标记或脚本/样式表(或doctype)的内容

问题2:

HTML对换行符不敏感

如果您仍然不满意,请检查规格:

问题1。如果我创建了一个html页面,其中只有一个字符串,而没有在其中写入任何html标记(没有正文、没有html、没有doctype),那么为什么浏览器仍然呈现它并显示字符串,就像它是一个段落一样

对此,我使用了我的最佳猜测,浏览器仍然能够将其显示为一个段落,因为这是它的最佳猜测,它通过假设这是作者想要的,从而“放置”这些标记来弥补丢失的标记,即使我们从未手动编写过这些标记

由于在这两种情况下都没有使用
,因此在中找不到它,因此整个文档都在中呈现

虽然浏览器(至少Firefox和Chrome)不会将其作为段落进行解析,但默认情况下,浏览器会在Quirks模式下呈现一个与段落相同的简单字符串。这是因为“当文档处于怪癖模式时,正文元素顶部或底部的HTML元素上的垂直边距预计将折叠为零”(,更详细),因此
正文的
边距顶部
有效地消耗了
p
边距顶部
。因为简单字符串没有边距,所以不会发生任何事情。最终结果是文本段落和文本本身显示相同

。请特别注意DOM视图,它显示文档的最终结构。有关比较,请参见。虽然它们在渲染中可能看起来相同,但结构不同

现在,为了说明我关于折叠页边距的观点,请使用带有
边框的
div来包装内容(文本或段落),以查看未折叠的页边距,一会儿

但是,如果包含
(防止浏览器进入怪癖模式),则将不会显示与相同的内容(
p
元素的
页边距顶部
不会折叠到
主体
元素的
页边距顶部

问题2。在上面的示例中,如果我在html源代码的不同行中编写了多个字符串,浏览器仍将它们显示为一行文本

同样,我使用了我的最佳猜测,并得出结论,HTML是一种自由形式的语言,因此它不会关心源代码中有多少空格或缩进

HTML将所有空白(除非设置为非
normal
)视为单个空格(折叠)。因此,相当于

然而,她似乎并不高兴。我的答案错了吗?如果是,那么他们是完全错了还是部分错了?这些问题的正确答案是什么

您的结论有些正确,但不能很好地处理边缘情况(例如,如果浏览器更改
p
元素的字体/颜色等)

问题1。如果我创建了一个html页面,其中只有一个字符串,而没有在其中写入任何html标记(没有正文、没有html、没有doctype),那么为什么浏览器仍然呈现它并显示字符串,就像它是一个段落一样

对此,我使用了我的最佳猜测,浏览器仍然能够将其显示为一个段落,因为这是它的最佳猜测,它通过假设这是作者想要的,从而“放置”这些标记来弥补丢失的标记,即使我们从未手动编写过这些标记

由于在这两种情况下都没有使用
,因此在中找不到它,因此整个文档都在中呈现

虽然浏览器(至少Firefox和Chrome)不会将其解析为段落,但它们会将一个与段落相同的简单字符串呈现出来