Doctype严格模式与混杂模式,以及如何触发这两种模式

171 阅读3分钟

Doctype严格模式与混杂模式,以及如何触发这两种模式

DOCTYPE(文档类型声明) 是 HTML 文档的重要组成部分,用于告诉浏览器使用哪种渲染模式来解析和显示页面。浏览器主要有两种渲染模式:严格模式(Standards Mode)混杂模式(Quirks Mode)。以下是它们的详细解析以及如何触发这两种模式。

1. 严格模式(Standards Mode)

(1) 定义

  • 严格模式是浏览器按照 W3C 标准解析和渲染页面的模式。

  • 在这种模式下,浏览器会遵循最新的 HTML 和 CSS 规范,确保页面在不同浏览器中表现一致。

(2) 特点

  • 标准兼容:严格遵循 W3C 标准。

  • 一致行为:页面在不同浏览器中表现一致。

  • 推荐使用:现代 Web 开发应始终使用严格模式。

(3) 触发方式

在 HTML 文档的开头添加正确的 <!DOCTYPE> 声明即可触发严格模式。例如:

<!DOCTYPE html>

这是 HTML5 的文档类型声明,也是目前最常用的方式。

2. 混杂模式(Quirks Mode)

(1) 定义

  • 混杂模式是浏览器为了兼容旧版网页而提供的一种渲染模式。

  • 在这种模式下,浏览器会模拟旧版浏览器(如 IE5)的行为,可能导致页面显示不一致。

(2) 特点

  • 兼容旧版:支持旧版 HTML 和 CSS 的非标准写法。

  • 不一致行为:页面在不同浏览器中可能表现不同。

  • 不推荐使用:除非需要兼容非常旧的网页,否则应避免使用。

(3) 触发方式

以下情况会触发混杂模式:

省略 <!DOCTYPE> 声明

<html>
  <head>
    <title>Quirks Mode</title>
  </head>
  <body>
    <p>This page is in quirks mode.</p>
  </body>
</html>

使用旧版 <!DOCTYPE> 声明

  • HTML4 过渡型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  • HTML4 框架集型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XML 声明位于 <!DOCTYPE> 之前

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html>
  <head>
    <title>Quirks Mode</title>
  </head>
  <body>
    <p>This page is in quirks mode.</p>
  </body>
</html>

3. 两种模式的区别

特性严格模式(Standards Mode)混杂模式(Quirks Mode)
盒模型标准盒模型(width 不包括内边距和边框)IE5 盒模型(width 包括内边距和边框)
字体大小标准字体大小计算旧版字体大小计算
表格布局标准表格布局旧版表格布局
CSS 解析严格遵循 CSS 规范兼容旧版 CSS 写法
JavaScript 行为标准 DOM 和 JavaScript 行为旧版 DOM 和 JavaScript 行为

4. 如何检测当前模式

可以通过 JavaScript 检测当前页面处于哪种模式:

if (document.compatMode === 'CSS1Compat') {
  console.log('Standards Mode');
} else {
  console.log('Quirks Mode');
}

5. 实际开发中的建议

  • 始终使用严格模式:在 HTML 文档开头添加 <!DOCTYPE html>

  • 避免触发混杂模式:确保 <!DOCTYPE> 声明正确且位于文档最前面。

  • 测试兼容性:在开发过程中使用多种浏览器测试页面,确保一致行为。

总结

  • 严格模式:遵循 W3C 标准,推荐使用。

  • 混杂模式:兼容旧版网页,不推荐使用。

  • 触发方式:通过 <!DOCTYPE> 声明控制。

理解这两种模式的区别和触发方式,有助于编写兼容性更好的代码,提升用户体验。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github