我不知道的DOCTYPE

作者: bpup | 来源:发表于2017-06-04 16:39 被阅读0次

最熟悉的往往最容易被忽略 ——DOCTYPE

关于DTD


wiki解释

A document type declaration, or DOCTYPE, is an instruction that associates a particular SGML or XML document (for example, a webpage) with a document type definition (DTD) (for example, the formal definition of a particular version of HTML1.0 - HTML 4.0).[1] In the serialized form of the document, it manifests as a short string of markup that conforms to a particular syntax.

这段话的大致意思是 文档类型声明(DTD)是用特定的文件类型相关联的指令 (如特定版本的 HTML1.0-html 4.0 的正式定义) 定义sgml 或 xml 文档(如网页)。在文档的序列化中,它表现为标记的短字符串,符合特定语法。

w3c 解释

A DTD is a Document Type Definition.
A DTD defines the structure and the legal elements and attributes of an XML document.

简单明了,DTD是文档类型的申明(这样描述不太全面,我觉的还应该包含语法规则在里面),DTD定义了XML文档的结构与合法元素以及XML属性。

MDN解释

<!DOCTYPE> 通知浏览器您用来编写文档 的HTML(或XML)版本。Doctype是一个声明,而不是标签 ; 您也可以将其称为“文档类型声明”,或简称为“DTD”。

DTD语法结构


HTML 4.01 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  "http://www.w3.org/TR/html4/frameset.dtd"> 

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。允许框架集(Framesets)。

HTML 5

   <!DOCTYPE html>

一般的结构模式为:

   <!DOCTYPE root-element PUBLIC "FPI" ["URI"] [ <!-- internal subset declarations -->]>

or

   <!DOCTYPE root-element SYSTEM "URI" [ <!-- internal subset declarations -->]>

公共和系统的关键字,代表它是什么样的文档类型定义的。如果它是公共的,那么这个关键字后面的“公共标识”称为FPI(正式公共标识)是受限制的,如果它是系统中,只有一个系统标识符必须给出。它指出,XML解析器必须找到系统中的特定方式的文档类型定义

HTML5的DOCTYPE声明,是非常短的,因为它缺乏一个URL或FPI(正式公共标识)的形式的文档类型定义(DTD)的引用。在HTML5中,正规的语法是大写字母定义,但即使两个小写字母和小写大写混合物是也被视为有效。此外HTML5不是基于SGML,使用DOCTYPE只为模式选择。该声明是在所有主流浏览器的支持。

XHTML与HTML类似,点击查看

浏览器模式


为了能够很好地显示满足标准的页面,又能最大程度兼容不合法的HTML。 浏览器厂商一般会提供两种浏览器模式:

标准模式(standards mode):浏览器根据标准规约来渲染页面。
混杂模式(quirks mode):浏览器采用更加宽松的、向后兼容的方式来渲染页面。
混杂模式下,浏览器会模仿旧浏览器的行为,比如IE6,在此基础上兼容新的标准特性。 混杂模式又称兼容模式、怪异模式等。

DOCTYPE切换


浏览器根据不同的DOCTYPE选择不同的渲染方法就叫做DOCTYPE切换。 其实DOCTYPE切换就是用来识别和兼容旧网页的。

以下情况浏览器会采用标准模式渲染:

  • 给出了完整的DOCTYPE声明
  • DOCTYPE声明了Strict DTD
  • DOCTYPE声明了Transitional DTD和URI

以下情况浏览器会采用混杂模式渲染:

  • DOCTYPE声明了Transitional DTD但未给出URI
  • DOCTYPE声明不合法
  • 未给出DOCTYPE声明
    tip:如果你是使用最新标准编写的页面但未给出DOCTYPE声明,这时就可能会出现一些怪异的行为。 例如盒模型不正确、窗口的size不正确等问题。所以,尽量为你网站的所有页面都给出合法的DOCTYPE声明

<!doctype html> 的作用


  1. 你可以轻松的写下这个doctype,而不用担心会写错;
  2. 你大概省下了105字节字符,对于一个每日PV达到千万级的站点,它可以省下相当客观流量;
  3. 它是向后兼容的,是的,html5的doctype就是这样写的,并且现代浏览器都认识它;
  4. !doctype申明为标准模式;

相关文章

  • 我不知道的DOCTYPE

    最熟悉的往往最容易被忽略 ...

  • DOCTYPE

    一、的作用 DOCTYPE标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标...

  • DOCTYPE

    原文链接:DOCTYPE的作用:文档类型与浏览器模式 DOCTYPE DTD(document type defi...

  • doctype

    doctype是什么,举例常见doctype及特点 1.声明必须处于HTML文档的头部,在标签之前,HTML5中不...

  • DOCTYPE

    DOCTYPE,简称为DTDs,是英文Document type的缩写,中文“文档类型”,在Web设计中用来说明你...

  • Doctype

    这个常见吧?! DOCTYPE声明位于html文档中的第一行,告知浏览器的解析器用什么文档标准来解析这个文档。这玩...

  • DOCTYPE

    DOCTYPE是用来声明文档类型和DTD规范的,告诉浏览器以何种规则解析html. html5的为

  • DOCTYPE是document type(文档类型)的简写 不是 HTML 标签。它为浏览...

  • ! DOCTYPE

    声明位于文档最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型解析规范来解析这个文档...

  • 常用的DOCTYPE

    XML用来传输和存储数据 HTML用来显示数据 XML没有预定义标签,可以自定义标签。而HTML只有预定义标签以提...

网友评论

    本文标题:我不知道的DOCTYPE

    本文链接:https://www.haomeiwen.com/subject/xiivfxtx.html