【问题标题】:Whats the point of DOCTYPE?DOCTYPE 的意义何在?
【发布时间】:2011-09-06 23:32:22
【问题描述】:

我知道不同的 doctypes 本质上是关于 html 的合规性,但是它与您指定的 doctype 有什么区别?浏览器是否会根据文档类型以不同方式处理相同的代码? 谢谢

更新 - 如果没有指定文档类型,大多数答案都提到怪癖模式可以设置。但是 xhtml 和 html 4.01 有什么不同呢?

【问题讨论】:

    标签: html doctype


    【解决方案1】:

    最重要的是是否有文档类型。如果您不这样做,浏览器将在“怪癖”模式而不是标准模式下工作,并且许多事情会略有不同。如果您有一个 - 任何 - 通常会在浏览器中激活更多符合标准的行为。

    请参阅this article,了解文档类型在各种不同浏览器上的作用以及不同浏览器具有哪些模式(怪癖、标准、几乎标准等)的详细信息。引用相关部分:

    文本/html 内容的模式

    选择 text/html 内容的模式 取决于 doctype 嗅探(已讨论 稍后在本文档中)。在 IE8 和 IE9,模式还取决于其他 因素。但是,默认情况下,即使在 IE8 和 IE9,模式取决于 用于非 Intranet 站点的 doctype 不在黑名单上 微软。

    不能强调 足够的确切行为 模式因浏览器而异 尽管在此讨论 文档已统一。

    怪癖模式

    在怪癖模式中 浏览器违反当代网络 格式规范,以便 避免“破坏”创作的页面 根据以前的做法 流行于 1990 年代后期。不同的 浏览器实现了不同的怪癖。 在 Internet Explorer 6、7、8 和 9 中, Quirks 模式被有效冻结 即 5.5。在其他浏览器中,Quirks 模式是少数偏离 几乎标准模式。

    如果您现在正在创作新页面, 你应该遵守 相关规范(CSS 2.1 in 特别)并使用标准 模式。

    标准模式

    在标准模式下 浏览器试图给出一致的 记录规范 正确处理到一定程度 在特定浏览器中实现。

    由于不同的浏览器在 不同的合规阶段, 标准模式不是单一目标, 要么。

    HTML 5 称这种模式为“无怪癖” 模式”。

    几乎标准模式

    火狐、Safari、 Chrome、Opera(7.5 起)、IE8 和 IE9 还有一种模式被称为“几乎 标准模式”,它实现了 表格单元格的垂直尺寸 传统而不严格 根据 CSS2 规范。 Mac IE 5、Windows IE 6 和 7、Opera 7.5 之前和 Konqueror 不需要 几乎标准模式,因为它们 不要实现垂直尺寸 表格单元格严格按照 他们的 CSS2 规范 无论如何,各自的标准模式。在 事实上,他们的标准模式更接近 到几乎标准模式而不是 新浏览器的标准模式。

    HTML 5 将此模式称为“有限 怪癖模式”。

    IE7 模式

    IE8 和 IE9 有一个模式 主要是模式的冻结副本 那是IE7中的标准模式。 其他浏览器没有类似的模式 this,并且未指定此模式 通过 HTML5。

    IE8 标准模式

    IE9 有一个模式 主要是模式的冻结副本 那是IE8中的标准模式。 其他浏览器没有类似的模式 this,并且未指定此模式 通过 HTML5。

    IE8 几乎标准模式

    IE9 有一个 主要是冻结副本的模式 几乎是标准的模式 IE8中的模式。其他浏览器没有 有这样的模式,还有这个模式 不是由 HTML5 指定的。

    ...但请参阅文章以获得完整的讨论。

    【讨论】:

      【解决方案2】:

      来自Wikipedia

      文档类型声明,或 DOCTYPE, 是一条指令 关联特定的 SGML 或 XML 文档(例如,网页) 文档类型定义 (DTD)(用于 例如,a 的正式定义 特定版本的 HTML)。在里面 文档的序列化形式,它 表现为一小串标记 符合特定语法的。

      现代网络中的 HTML 布局引擎 浏览器执行 DOCTYPE “嗅探”或 "switching", 其中的 DOCTYPE 在 文档作为文本/html 确定布局模式,例如 “怪癖模式”或“标准模式”。这 HTML5 的 text/html 序列化, 它不是基于 SGML,使用 DOCTYPE 仅用于模式选择。自从 网络浏览器是用 专用的 HTML 解析器,而不是 比基于通用 DTD 的 解析器,它们不使用 DTD,并且会 永远不要访问它们,即使 URL 是 假如。 DOCTYPE 保留在 HTML5 作为“大部分无用,但 required" 标头仅用于触发 普通浏览器中的“标准模式”.

      我决定引用这段文字,因为它比我更能回答你的问题:)。重要的是,缺少 DOCTYPE 会在某些浏览器中触发“怪癖模式”。

      【讨论】:

        【解决方案3】:

        一切都与标准有关,是的,浏览器处理代码的方式不同。这意味着,所有浏览器应该平等地显示页面。如果没有指定标准,浏览器将根据需要解释页面。

        【讨论】:

          【解决方案4】:

          声明不是 XHTML 标记;它是对 Web 浏览器的指示,说明页面是用什么版本的标记语言编写的。

          声明引用文档类型定义 (DTD)。 DTD 指定标记语言的规则,以便浏览器正确呈现内容。

          【讨论】:

            【解决方案5】:

            DOCTYPE 声明必须符合 SGML,语言 HTML 是它的一个实例。

            DOCTYPE 声明被某些浏览器用于trigger different rendering modes

            【讨论】:

              【解决方案6】:

              浏览器模式

              过去,浏览器根据自己的规则实现 CSS。
              只是这些年,浏览器才适应了 W3C 标准。

              为了确保网站正确呈现各种浏览器,Web 开发人员必须根据这些浏览器的意愿来实现 CSS。因此,大多数网站使用 CSS 的方式并不完全符合规范。

              因此,当标准合规性变得重要时,浏览器供应商面临着艰难的选择。更接近 W3C 规范是可行的方法,但如果他们只是更改 CSS 实现以完美匹配标准,许多网站或多或少都会崩溃。如果突然以正确的方式解释现有的 CSS,它就会开始出现奇怪的副作用。

              因此,更接近标准合规性会导致问题。另一方面,不更接近标准合规性将使浏览器大战时代的普遍混乱永久化。

              为此,所有浏览器都必须开始支持这两种模式。旧设计的怪癖模式和新设计的标准模式。

              从这里转述:Quirks mode and strict mode

              文档类型

              选择使用哪种模式需要一个触发器,而这个触发器是在“文档类型切换”中找到的。 根据标准,任何 (X)HTML 文档都应该有一个 doctype,它可以告诉全世界该文档正在使用哪种 (X)HTML 风格。

              也取自这里:Quirks mode and strict mode

              其他资源

              【讨论】:

                【解决方案7】:

                doctype 声明应该是 HTML 文档中的第一件事,在标记之前。

                它不是 HTML 标签; 它是给网络浏览器的关于页面是用什么版本的标记语言编写的指令。

                使用 HTML5 变得更简单:<!DOCTYPE html>

                如果您没有正确的文档类型,浏览器将不知道使用 HTML5。

                【讨论】:

                  【解决方案8】:

                  因为 Doctype 是告诉浏览器应该如何处理页面的标志。

                  例如:

                  HTML5 需要这个文档类型<!DOCTYPE html> 如果您从页面中删除它,您页面中的任何 HTML5 功能都不会被激活。

                  您可以在http://www.w3.org/QA/Tips/Doctype阅读更多内容

                  【讨论】:

                  • 绝对不是。浏览器不区分 HTML 的版本。无论您使用 HTML5 doctype、XHTML1 doctype 还是 HTML4 doctype(只要确保您的 doctype 触发标准兼容模式),您的浏览器都将能够在您的页面中使用 HTML5 功能。
                  • 对不起,Rudy,我不得不对你投反对票,因为说 html5 没有文档类型就无法工作是不正确的。如果您忽略它,浏览器可能无法在标准兼容模式下运行
                  • 来自文档:DOCTYPE 声明是 并且在 HTML 语法中不区分大小写。来自早期 HTML 版本的 DOCTYPE 更长,因为 HTML 语言是基于 SGML 的,因此需要对 DTD 的引用。在 HTML5 中,情况不再如此,* DOCTYPE 只需要为使用 HTML 语法编写的文档启用标准模式*。浏览器已经为 这样做了。
                  • @Stephenmurdoch:你确定吗?来自 W3C 页面(w3.org/TR/html5/syntax.html):“DOCTYPE 是由于遗留原因而必需的。当省略时,浏览器倾向于使用与某些规范不兼容的不同呈现模式。在文档中包含 DOCTYPE 可确保浏览器尽最大努力尝试遵循相关规范。”上次忘记放了,我的 HTML5 相关代码根本不工作。
                  • 如果不使用 doctype 会触发 quirks 模式,这会导致在某些浏览器中渲染不正确和无法使用 HTML5 功能。但是,HTML5 doctype 触发的标准兼容模式与其他 doctype 触发的标准兼容模式相同。如果我使用<!doctype html public "-//W3C//DTD HTML 4.01//EN">,我将能够使用画布、HTML5 视频和所有其他 HTML5 功能,并且可以在任何地方使用。
                  猜你喜欢
                  • 2018-05-13
                  • 2012-04-12
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-11-13
                  • 1970-01-01
                  • 2014-01-16
                  相关资源
                  最近更新 更多