DOCTYPE声明
作用
DOCTYPE声明告诉浏览器该文件的类型,让浏览器解析器知道应该用哪个HTML或XHTML规范来解析文档。
元素在不同文档类型中的使用规范,请参阅 这个 HTML 元素表,其中列出了每种元素会出现在哪个文档类型中。
- XHTML元素必须被正确地嵌套;
- XHTML元素必须被关闭,非空标签必须使用结束标签,空标签也必须被关闭;
- XHTML元素必须小写;
- XHTML文档必须拥有根元素,所有的 XHTML 元素必须被嵌套于html根元素中。
用法
DOCTYPE声明位于文档中的最前面的位置,位于html标签之前。
所有浏览器都支持 DOCTYPE 声明。
DOCTYPE 声明对大小写不敏感。
具体用法参考常用的 DOCTYPE 声明。
严格模式和混杂模式的区别
定义
严格模式(又称标准模式,Standards模式)和混杂模式(Quirk模式)都是指浏览器的呈现模式。
严格模式——又称标准模式,是指浏览器按照 W3C 标准 解析代码,呈现页面。
混杂模式——又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码,即使用一种比较宽松的向后兼容 的方式来显示页面。
浏览器究竟是使用严格模式还是混杂模式呈现页面与网页中的 DTD (文件类型定义)直接相关。
- 文件类型定义(DTD,Document Type Definition)是一组机器可读的规则,他们定义 XHTML 或 HTML的特定版本中允许有什么标签,不允许有什么标签。浏览器通过分析页面的 DOCTYPE 声明来了解要使用哪个 DTD ,由此知道要使用HTML或XHTML 的哪个版本。
- 在 HTML 4.01 和 XHTML1.0 中, 声明引用DTD。包括严格模式(Strict模式)、过渡模式(Transition模式) 和框架模式(Frameset模式), 过渡 DOCTYPE的目的是帮助开发人员从老版本迁移到新版本。
- XHTML 1.1的 DTD 等同于 XHTML 1.0 Strict。
- HTML5 不需要引用 DTD,因为HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。
应用
对于 HTML 4.01 文档——
- 包含严格(Strict) DTD 的 DOCTYPE 常常导致页面以标准模式呈现。
- 包含过渡(Transitional) DTD 和 URI 的 DOCTYPE也导致页面以标准模式呈现。
- 但是有过渡(Transitional) DTD 而没有 URI 会导致页面以混杂模式呈现。
- DOCTYPE 不存在或形式不正确会导致HTML 和 XHTML 文档以混杂模式呈现。
对于HTML5文档——
- HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别。
区别
严格模式和混杂模式会有布局、样式解析和脚本执行三个方面的区别。
盒模型
在标准模式(W3C 标准)中,如果设置一个元素的高度和宽度,指的是元素内容的高度和宽度,而在混杂模式下,IE的宽度和高度padding和border。设置行内元素的高度
在标准模式下,给等行内元素设置宽度和高度都不会生效。
在混杂模式下,则可以生效。设置百分比的高度
在标准模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的。用margin:0 auto 设置水平居中
在标准模式下可以使用margin:0 auto 设置元素水平居中,而在混杂模式下则会失效。……