doctype声明在哪里?

时间:2015-01-21 05:42:58

标签: html syntax doctype

当我添加<!doctype html>时,它必须位于我的HTML顶部并采用该格式吗?

然而,在作业中,我需要使用而不是更改html代码,我只能添加css文件等。在这个html代码中,结构对于我所做的任何事情都是独一无二的。曾见过它看起来像这样:

<html>
<head>
</head>
<body>
    <doctype html>
    <link rel="stylesheet" ...>
    <h1>...</h1>
    ...
</body>
</html>

我理解文档类型是什么和做什么,我总是把它们放在一边,但我想知道该代码是否有效,或者浏览器是否忽略了问题而只是渲染它。

5 个答案:

答案 0 :(得分:1)

Html声明应该位于文件的顶部,因为它指向Web浏览器 我的HTML文档正在使用哪个版本。 HTML标签取决于Web浏览器和我们使用的HTML版本。

答案 1 :(得分:1)

DOCTYPE声明没有正确写入或在正确的位置有效informative but dated article。它实际上是HTML注释,而不是标记。

  

<DOCTYPE>声明必须是您的第一件事   文档,在<html>标记之前。

html标记上方的文件顶部应为<!DOCTYPE html>


至于如何处理,

现代浏览器有quirks-mode,他们试图解释不正确编写的HTML。我不确定每个浏览器如何处理该标记,但它肯定值得关注:

  1. 标签未关闭。因此,它可能会将所有内容包装在正文中,这会导致一些意想不到的CSS问题。
  2. 或者完全忽略doctype标签(这可能只是一厢情愿)
  3. 快速测试表明标签是以奇怪的方式处理的。它正在包装其他内容..那种?呃。奇怪:

    http://jsfiddle.net/CoryDanielson/6d12grLg/

答案 2 :(得分:1)

doctype字符串需要一开始就有效。它对浏览器的唯一效果会影响浏览器模式的选择,即“标准”,“几乎标准”或“怪癖”模式。如果开头没有doctype字符串,则会选择quirks mode。这对CSS的使用有很大的影响。所以如果这是一项任务,他们要么在你身上耍花招,要么就是不称职。

与规范所说的无关(这在SO的旧问题的答案中有所涉及)。如果您需要在问题中使用HTML,则代码在以下几个方面无效(缺少doctype字符串,缺少title元素,无效<doctype html>标记和link元素放在body内。然而,代码适用于“工作”的某些值,但是在怪癖模式中。

答案 3 :(得分:0)

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:

http://www.w3.org/QA/2002/04/valid-dtd-list.html

http://www.w3.org/QA/Tips/Doctype

答案 4 :(得分:0)

该doctype声明无效,至少会导致某些浏览器进入奇怪的兼容模式。

W3c(在w3.org上),在一个名为html5/syntax.html的页面上,表示&#34; DOCTYPE 是必需的前导码&#34;我认为这意味着它是必需的,它必须首先出现。

它还说它必须按以下顺序组成:

  1. 字符串,它是字符串<!DOCTYPE的ASCII不区分大小写匹配。
  2. 一个或多个空格字符。
  3. 字符串,它是字符串html的ASCII不区分大小写匹配。
  4. (可选)DOCTYPE旧字符串或过时的允许DOCTYPE字符串。
  5. 零个或多个空格字符。
  6. >(U + 003E)字符。