首页 > HTML 文档除 <!DOCTYPE html> 以外的 DTD 在什么情况下会用到?

HTML 文档除 <!DOCTYPE html> 以外的 DTD 在什么情况下会用到?

关于浏览器对 HTML 文档在不同的 DTD 下的工作模式有个大概的了解。
现在大多推荐使用<!DOCTYPE html>,使浏览器以标准模式渲染页面,保证页面在各浏览器下最大程度的兼容。

但在什么情况必须使用其他的 DTD 呢?

如果是为了以前写的一些不符合最新标准的页面能够在浏览器下正常显示(?)
那么现在按标准写 HTML 页面的话,是否已无需考虑其他的 DTD 了?

如果上述内容有理解错误也希望大家指出,非常感谢!
一些常见的 DOCTYPE 及其触发的模式,在这个链接页面的下方有表格。


任何情况下都建议使用 <!DOCTYPE html>
这是唯一的一种html5的声明方式


如 @radius 所言,今天我们通常都是写 HTML 5,所以使用 <!DOCTYPE html> 即可。

如果你非常清楚的知道写的不是 HTML5,比如,明确是 XHTML 1.0 Strict 模式,那可以使用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

有些框架,比如 4.0 之前的 ExtJS,为了兼容低版本的 IE 在框架里处理了不同浏览器的差异,它的建议是不是用 doctype。

如果你在编写 HTTP 服务器,那么,对于像是 404、500 这样的页面,你可能会使用 HTML 3.2 兼容一些已经进了博物馆的浏览器:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

当你编写 HTML 邮件时,可能会发现一些邮件客户端从安全或别的原因考虑,对于新的 HTML 以及一些好的习惯如使用样式支持不好,可能需要使用 font 之类的标记,因此也会使用老版本的 HTML,不过这种情况,是不是用 doctype 并没有关系了。


DTD 是 Document Type Definition 的缩写,用于校验文档的正确性,一般情况下浏览器会无视最后面的校验文档,比如:"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd",不过中间的 PUBLIC "-//W3C//DTD XHTML 1.1//EN" 往往会决定浏览器的渲染模式。

默认地, <!doctype html> 会令浏览器按照标准或接近标准的模式渲染html,因此才会被推荐使用这种写法作为文档声明。其他常见的情况就是使用 xhtml 1.1 ,凭个人经验,我只记得在Chrome下唯一的区别就是当文档高度小于视口高度时,文档会充满视口。一般地,没必要纠结。

当然了,极少数特殊需求,比如嵌入式系统里使用极旧的html标准,那另说。

【热门文章】
【热门文章】