今天,来说说!Doctype的作用,严格模式和混杂模式的区别、以及如何触发这两种模式。
一、HTML中Doctype的作用:
声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。DTD(文档类型定义)是一组机器可读的规则,他们定义 XML 或 HTML 的特定版本中允许有什么,不允许有什么。
在解析网页时,浏览器将使用这些规则检查页面的有效性并且采取相应的措施。浏览器通过分析页面的 DOCTYPE 声明来了解要使用哪个 DTD ,由此知道要使用 HTML 的哪个版本。
二、严格模式和混杂模式的区别:
首先,严格模式(又称标准模式,Standards模式)和混杂模式(Quirk模式)都是指浏览器的呈现模式,要与Doctype的两种风格区别开来(严格( strict )和过渡( transitional ),过渡 DOCTYPE 的目的是帮助开发人员从老版本迁移到新版本)。
严格模式:
又称标准模式,是指浏览器按照 W3C 标准解析代码,呈现页面
混杂模式:
又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码,即使用一种比较宽松的向后兼容的方式来显示页面
而浏览器究竟是使用严格模式还是混杂模式呈现页面与网页中的 DTD (文件类型定义)直接相关。
对于 HTML 4.01 文档,
- 包含严格 DTD 的 DOCTYPE 常常导致页面以标准模式呈现。
- 包含过度 DTD 和 URI 的 DOCTYPE 也导致页面以标准模式呈现。
- 但是有过度 DTD 而没有 URI 会导致页面以混杂模式呈现。
- DOCTYPE 不存在或形式不正确会导致 HTML 和 XHTML 文档以混杂模式呈现。
对于HTML5文档,
- HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)
三、如何触发文档模式
触发混杂模式:
如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。但采用混杂模式不是什么值得推荐的做法,因为不同浏览器在这种模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言。
触发标准模式:
< !– HTML 4.01 严格型 –>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
< !– XHTML 1.0 严格型 –>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">