DOCTYPE声明 | 严格模式和混杂模式

DOCTYPE声明

作用
DOCTYPE声明告诉浏览器该文件的类型,让浏览器解析器知道应该用哪个HTML或XHTML规范来解析文档。

元素在不同文档类型中的使用规范,请参阅 这个 HTML 元素表,其中列出了每种元素会出现在哪个文档类型中。

HTML与XHTML之间主要的差异——

  • XHTML元素必须被正确地嵌套;
  • XHTML元素必须被关闭,非空标签必须使用结束标签,空标签也必须被关闭;
  • XHTML元素必须小写;
  • XHTML文档必须拥有根元素,所有的 XHTML 元素必须被嵌套于html根元素中。

用法
DOCTYPE声明位于文档中的最前面的位置,位于html标签之前。

所有浏览器都支持 DOCTYPE 声明。

DOCTYPE 声明对大小写不敏感。

具体用法参考常用的 DOCTYPE 声明

严格模式和混杂模式的区别

定义
严格模式(又称标准模式,Standards模式)和混杂模式(Quirk模式)都是指浏览器的呈现模式。

严格模式——又称标准模式,是指浏览器按照 W3C 标准 解析代码,呈现页面。

混杂模式——又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码,即使用一种比较宽松的向后兼容 的方式来显示页面。

浏览器究竟是使用严格模式还是混杂模式呈现页面与网页中的 DTD (文件类型定义)直接相关。

扫描二维码关注公众号,回复: 919025 查看本文章
  • 文件类型定义(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 ,因此也就没有严格模式与混杂模式的区别。

区别
严格模式和混杂模式会有布局、样式解析和脚本执行三个方面的区别。

  1. 盒模型
    在标准模式(W3C 标准)中,如果设置一个元素的高度和宽度,指的是元素内容的高度和宽度,而在混杂模式下,IE的宽度和高度padding和border。

  2. 设置行内元素的高度
    在标准模式下,给等行内元素设置宽度和高度都不会生效。
    在混杂模式下,则可以生效。

  3. 设置百分比的高度
    在标准模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的。

  4. 用margin:0 auto 设置水平居中
    在标准模式下可以使用margin:0 auto 设置元素水平居中,而在混杂模式下则会失效。

    ……

猜你喜欢

转载自blog.csdn.net/weixin_38840741/article/details/79929380