文档类型声明去哪里了?
Where does doctype declaration go?
当我输入 <!doctype html>
时,它是否必须位于我的 html 的顶部并采用完全相同的格式?
但是,在我正在做的作业中,我需要使用而不是更改 html 代码,并且我只能添加 css 文件等。在这个 html代码,该结构对于我所见过的任何东西都是独一无二的,它看起来像这样:
<html>
<head>
</head>
<body>
<doctype html>
<link rel="stylesheet" ...>
<h1>...</h1>
...
</body>
</html>
我了解文档类型是什么以及它的作用,而且我总是把它们放在一起,但我想知道该代码是否有效,或者浏览器是否忽略了问题并只是呈现它。
HTML <!DOCTYPE>
声明
定义和用法
<!DOCTYPE>
声明必须是 HTML 文档中的第一件事,在 <html>
标记之前。
<!DOCTYPE>
声明不是HTML标签;它是向 Web 浏览器发出的关于页面所用 HTML 版本的指令。
在HTML 4.01中,<!DOCTYPE>
声明引用了一个DTD,因为HTML 4.01是基于SGML的。 DTD 指定标记语言的规则,以便浏览器正确呈现内容。
HTML5 不基于 SGML,因此不需要引用 DTD。
提示:请务必将 <!DOCTYPE>
声明添加到您的 HTML 文档中,以便浏览器了解预期的文档类型。
来源:
http://www.w3schools.com/tags/tag_doctype.asp
W3C:
Html 声明应该放在文件的顶部,因为它指示 Web 浏览器
我的 HTML 文档使用的是哪个版本。
HTML 标签取决于网络浏览器和我们使用的 HTML 版本。
根据此 informative but dated article,DOCTYPE 声明未正确编写或位于有效的正确位置。它实际上是 HTML 评论,而不是标签。
The <DOCTYPE>
declaration must be the very first thing in your
document, before the <html>
tag.
它应该是 <!DOCTYPE html>
在文件顶部 html 标签上方。
就处理方式而言,
现代浏览器有一个 quirks-mode,它们试图解释不正确的书写 HTML。我不确定每个浏览器如何处理该标签,但这绝对值得关注:
- 标签没有关闭。所以它可能会将所有内容包裹在正文中,这会导致一些意想不到的 CSS 问题。
- 否则 doctype 标签将被完全忽略(这可能只是一厢情愿)
快速测试表明标签的处理方式很奇怪。它包装了其他内容.. 怎么样?嗯。奇怪:
该 doctype 声明无效,至少会导致某些浏览器进入奇怪的兼容模式。
W3c(在 w3.org),在名为 html5/syntax.html 的页面上说 "a DOCTYPE is a required preamble",我认为这意味着它是必需的,并且必须先出现。
它还说它必须按顺序包含以下组件:
- 与字符串
<!DOCTYPE
. 不区分大小写的 ASCII 匹配字符串
- 一个或多个 space 个字符。
- 与字符串
html
. 不区分大小写的 ASCII 匹配字符串
- 可选的 DOCTYPE 遗留字符串或过时的允许 DOCTYPE 字符串。
- 零个或多个 space 个字符。
- 一个
>
(U+003E) 字符。
doctype 字符串需要位于开头才能生效。它仅对浏览器的影响是影响浏览器模式的选择,即“标准”、“几乎标准”或“怪癖”模式。当开头没有doctype字符串时,选择quirks mode。这对 CSS 的使用有相当大的影响。所以如果这是一个任务,他们要么是在耍你,要么是不称职。
规范说的是什么无关紧要(这在 SO 的旧问题的答案中有介绍)。如果您需要在问题中使用 HTML ,那么代码无论如何都是无效的(缺少 doctype 字符串,缺少 title
元素,无效的 <doctype html>
标记,以及 link
元素放置在 body
) 内。然而,对于“工作”的某些值,代码是有效的,但在怪癖模式下。
当我输入 <!doctype html>
时,它是否必须位于我的 html 的顶部并采用完全相同的格式?
但是,在我正在做的作业中,我需要使用而不是更改 html 代码,并且我只能添加 css 文件等。在这个 html代码,该结构对于我所见过的任何东西都是独一无二的,它看起来像这样:
<html>
<head>
</head>
<body>
<doctype html>
<link rel="stylesheet" ...>
<h1>...</h1>
...
</body>
</html>
我了解文档类型是什么以及它的作用,而且我总是把它们放在一起,但我想知道该代码是否有效,或者浏览器是否忽略了问题并只是呈现它。
HTML <!DOCTYPE>
声明
定义和用法
<!DOCTYPE>
声明必须是 HTML 文档中的第一件事,在 <html>
标记之前。
<!DOCTYPE>
声明不是HTML标签;它是向 Web 浏览器发出的关于页面所用 HTML 版本的指令。
在HTML 4.01中,<!DOCTYPE>
声明引用了一个DTD,因为HTML 4.01是基于SGML的。 DTD 指定标记语言的规则,以便浏览器正确呈现内容。
HTML5 不基于 SGML,因此不需要引用 DTD。
提示:请务必将 <!DOCTYPE>
声明添加到您的 HTML 文档中,以便浏览器了解预期的文档类型。
来源: http://www.w3schools.com/tags/tag_doctype.asp
W3C:
Html 声明应该放在文件的顶部,因为它指示 Web 浏览器 我的 HTML 文档使用的是哪个版本。 HTML 标签取决于网络浏览器和我们使用的 HTML 版本。
根据此 informative but dated article,DOCTYPE 声明未正确编写或位于有效的正确位置。它实际上是 HTML 评论,而不是标签。
The
<DOCTYPE>
declaration must be the very first thing in your document, before the<html>
tag.
它应该是 <!DOCTYPE html>
在文件顶部 html 标签上方。
就处理方式而言,
现代浏览器有一个 quirks-mode,它们试图解释不正确的书写 HTML。我不确定每个浏览器如何处理该标签,但这绝对值得关注:
- 标签没有关闭。所以它可能会将所有内容包裹在正文中,这会导致一些意想不到的 CSS 问题。
- 否则 doctype 标签将被完全忽略(这可能只是一厢情愿)
快速测试表明标签的处理方式很奇怪。它包装了其他内容.. 怎么样?嗯。奇怪:
该 doctype 声明无效,至少会导致某些浏览器进入奇怪的兼容模式。
W3c(在 w3.org),在名为 html5/syntax.html 的页面上说 "a DOCTYPE is a required preamble",我认为这意味着它是必需的,并且必须先出现。
它还说它必须按顺序包含以下组件:
- 与字符串
<!DOCTYPE
. 不区分大小写的 ASCII 匹配字符串
- 一个或多个 space 个字符。
- 与字符串
html
. 不区分大小写的 ASCII 匹配字符串
- 可选的 DOCTYPE 遗留字符串或过时的允许 DOCTYPE 字符串。
- 零个或多个 space 个字符。
- 一个
>
(U+003E) 字符。
doctype 字符串需要位于开头才能生效。它仅对浏览器的影响是影响浏览器模式的选择,即“标准”、“几乎标准”或“怪癖”模式。当开头没有doctype字符串时,选择quirks mode。这对 CSS 的使用有相当大的影响。所以如果这是一个任务,他们要么是在耍你,要么是不称职。
规范说的是什么无关紧要(这在 SO 的旧问题的答案中有介绍)。如果您需要在问题中使用 HTML ,那么代码无论如何都是无效的(缺少 doctype 字符串,缺少 title
元素,无效的 <doctype html>
标记,以及 link
元素放置在 body
) 内。然而,对于“工作”的某些值,代码是有效的,但在怪癖模式下。