历史原因

在W3C标准未确定之前,各浏览器对于HTML和CSS有各自不同的解析方式,很多旧网页都是在W3C标准未确定时期实现、设计的。在W3C标准确定之后,浏览器为了保证对非标准的旧网页设计的后向兼容性。现代浏览器(IE6以上,IE6以下版本永远定在了怪异模式)一般都有两种渲染模式:标准模式和怪异模式。

在标准模式下,浏览器按照W3C标准对文档进行解析和渲染;而在怪异模式下,浏览器则按照非标准的实现方式对文档进行解析和渲染。这样的话,对于旧有的网页,浏览器启动怪异模式,就能够使得旧网页正常显示。

简单来说

标准模式:浏览器按照W3C标准解析执行代码;

怪异模式:浏览器根据自己向后兼容的方式解析执行代码;

获取当前模式

在控制台输入 document.compatMode 就可以知道当前的模式。

在这里插入图片描述 BackCompat:怪异模式

CSS1Compat:标准模式

开启怪异模式

没有指定dtd将会开启浏览器的怪异模式,这种说法是错的!正确的说法应该是没有定义doctype才会开启怪异模式。

  • 在标准化之前写的页面是没有doctype的,因此没有doctype的页面是在怪异模式下渲染的。
  • 如果web开发人员加入的doctype,大部分的doctype会开启标准模式,页面也会按照标准来渲染。

标准模式与怪异模式区别

盒模型宽高:

  • 在怪异模式下,盒模型为怪异盒模型 ,宽高包含padding和border;

  • 在标准模式下,盒模型为标准盒子模型,宽高为内容宽高不包含padding和border;

图片垂直对齐方式

  • 对于行内元素和table-cell元素,标准模式下vertical-align属性默认值是baseline;

  • 在怪异模式下,table单元格中的图片的vertical-align属性默认值是bottom,因此在图片底部会有几像素的空间;

元素中的字体

  • css中font的属性都是可以继承的;
  • 怪异模式下,对于table元素,字体的某些元素不能从其他封装元素继承中得到,特别是font-size属性

内联元素的尺寸

  • 标准模式下,non-replaced inline元素无法自定义大写;
  • 怪异模式下,定义元素的宽高会影响元素的尺寸;

元素的百分比高度

  • 当一个元素使用百分比高度时,在标准模式下,高度取决于内容变化;
  • 在怪异迷失下,百分比被准确应用;

元素溢出的处理

  • 标准模式下,overflow取值默认值为visible;
  • 在怪异模式下,这个溢出会被当做扩展box对待,就是元素的大小由内容决定,溢出不会裁剪,元素框自动调整,包含溢出内容;

结语

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!