简单来说就是告诉我们的浏览器采用什么方式渲染页面。

具体些:

DOCTYPE是document type(文档类型的)的简写,它必须放每个XHTML页面在所有的标识文档和代码之上。它是用来说明你的XHTML或HTML是什么版本。需要注意一下的是: 在HTML 5 中,DOCTYPE 是不区分大小写;不过对于XHTML、Polyglot HTML,DOCTYPE 这几个字母需要大写。如果怕和我一样容易忘记的话,就都默认大写就好啦。

其中浏览器的渲染模式主要是有三种:Quirks Mode(混杂模式、怪异模式、兼容模式。因为翻译不同的原因)、Standards Mode(标准模式、严格模式)、Almost Standards Mode(几乎标准模式)。

而浏览器之所以可以识别我们页面想要的版本就是DTD的存在(文档类型定义,浏览器会根据里面所规定的文档规则来读取你的标识的)。

HTML 和 XHTML 的DOCTYPE 声明都有 strict/transitional/frameset 三种模式。 strict 模式禁止所有 presetational or deprecatedelements(例如 font 标签)以及 frameset标签();transitional 模式只禁止了 frameset标签;frameset 模式与 transitional 模式相同,并且允许 frameset 标签。

XHTML 1.0 提供了三种DTD声明可供选择:

  • 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如
    ,完整代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN”
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    我们选择什么样的DOCTYPE 理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0
    Transitional)是目前理想选择。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
    注:上面说的”表现层的标识、属性”是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。
    打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难

更加全面、标准的论述可以参考文档 ActivatingBrowser Modes with Doctype

  • nofollow属性的个人理解和用法

    什么是nofollow属性呢?nofollow是HTML中a标签的一个属性值。这个属性的作用就是告诉我们的搜索引擎不要去追踪、记录带有这个属性的链接。 添加nofollow属性的目的是什么?优化SEO,防止垃圾链接的蔓延。怎么说呢?再...

    nofollow属性的个人理解和用法
  • Mysql数据库10万条数据多表联合查询速度过慢解决方案

    问题描述今天在写项目时发现之前好好的查询接口突然挂了🤔,检查后发现原来是有人往数据里新增了10万条数据,以至于Mysql语句执行的特别慢就不行了。 原因原因也简单这个接口原本是一张组织机构表关联区域表、组织标准类型表、币种表、行业分...

    Mysql数据库10万条数据多表联合查询速度过慢解决方案
  • JS清空当前域名下的所有Cookie

    今天项目突然需要用到当用户退出登录时,清楚用户域名下的所有cookie。不多哔哔,直接上代码 代码片段//清除所有cookie函数 function clearAllCookie() { var date=new Date()...

    JS清空当前域名下的所有Cookie
  • 如何搭建一个属于自己的小梯子

    准备1.电脑2.服务器连接工具,你可以选择自己顺手的就好,教程中我的Windows系统使用的是我比较中意的MobaXterm3.不在大陆境内的服务器一台(这是小梯子的灵魂所在)4.SSR连接客户端 安卓客户端【Download】 M...

    如何搭建一个属于自己的小梯子
  • 如何优雅的将图片上传到自己的图床【Markdown利器】

    动机有很长一段时间没有去认真的更新博客主要是自己的博客更新步骤感觉太繁琐了。每次新发博文用到图片都需要打开七牛云-登录-上传-获取外链,真的是好烦啊!有没有什么简单的方法,能够优雅快速的上传图片,并拿到它的Markdown图片链接呢�...

    如何优雅的将图片上传到自己的图床【Markdown利器】