2015-01-21 100 views
0

当我把<!doctype html>它必须在我的HTML的顶部,并在确切的格式?doctype声明去哪里?

但是,在我正在做的工作中,我需要使用并且不能更改html代码,并且我只能添加css文件等。在此html代码中,该结构对于我见过的任何内容都是独一无二的它看起来是这样的:

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

我明白什么是DOCTYPE是和做,我总是把他们的,但我不知道是否该代码甚至是有效的,或者如果浏览器被忽略的问题,只是渲染它。

+0

[DOCTYPE声明必须是HTML文档中的第一个标记吗?](http://stackoverflow.com/questions/69828/does-the-doctype-declaration-have-to-be-第一个标签在HTML文件) – 2015-01-21 05:51:37

+0

这甚至不是一个有效的DOCTYPE声明。它应该在文件的顶部,并且缺少! '<!DOCTYPE html>'你应该只是给你的教授发送关于这个HTML的电子邮件......或者只是更新它。该doctype标签最有可能会被浏览器忽略,但它不应该成为问题。 – 2015-01-21 05:52:32

+1

是的,它似乎是一个组织极其糟糕的任务,除非它是故意的。 – BoltClock 2015-01-21 05:53:05

回答

0

这DOCTYPE声明是无效的,并且将导致至少某些浏览器进入怪异的兼容性模式。

W3C(在w3.org),一个叫html5/syntax.html页上,说:“一个DOCTYPE是必需的序言”,我理解的意思是必需的,它必须是第一位的。

它还表示,它必须包含在这个顺序以下几部分组成:

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

最后找到这个。 – 2015-01-21 06:19:50

0

HTML <!DOCTYPE>宣言

定义和用法

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

<!DOCTYPE>声明不是HTML标记;它是网页浏览器关于写入页面的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

+0

你能添加一个链接或资源吗?很多信息都是无关紧要的。 – 2015-01-21 05:49:20

+1

谢谢,我为快速回答和声明upvoted,但我与w3schools.com牛肉,我真的在寻找一个明确的答案是“是该文档的声明有效”,所以我不会接受这个答案作为正确的一个。 – 2015-01-21 05:56:19

+2

我已经用W3C链接更新了我的答案..它对您可能是可靠的。 – 2015-01-21 06:01:38

1

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

+0

你有一个消息来源说它必须在顶部? – 2015-01-21 05:50:39

+0

http://www.w3.org/QA/Tips/Doctype这说标记验证工具使用此doctype检查HTML的语法,因此根据我的必要将它放在顶部以允许完整的语法检查 – 2015-01-21 05:57:21

1

该DOCTYPE声明没有正确书写或正确的位置有效每个这informative but dated article。它实际上是一个HTML评论,而不是一个标签。

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

它应该是<!DOCTYPE html>位于html标记上方的文件顶部。


至于它是如何处理的,

现代浏览器有一个quirks-mode,他们试图解释不当书面HTML。我不确定每个浏览器如何处理该标签,但这绝对值得关注:

  1. 该标签未关闭。所以很可能会将所有内容包裹在内部,这会导致一些意想不到的CSS问题。
  2. 或者DOCTYPE标签会被完全忽略(这可能只是一厢情愿)

快速测试,表明该标签是一个奇怪的方式来处理。它正在包装其他内容......种?呃。奇怪:

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

1

doctype字符串需要在开始时有任何作用。其只有对浏览器的影响是影响浏览器模式的选择,即“标准”,“几乎标准”或“怪癖”模式。当开始时没有文档类型字符串时,选择quirks mode。这对使用CSS有很大的影响。所以,如果这是一项任务,他们要么玩弄你,要么无能。

这与规范的说法无关(这在SO的老问题的答案中已经涵盖)。如果您需要在问题中使用HTML,无论如何,代码在多个理由(缺少文档类型字符串,缺少title元素,无效的<doctype html>标记和放置在body内的link元素)时无效。然而,代码对于“工作”的某些价值观起作用,但是在怪癖模式中。