关于Doctype、严格模式与混杂模式

<!Doctype> 文档声明,位于文档中的最前面的位置,处于<html>标签之前。此标签告知浏览器文档使用哪种HTML或XHTML规范。

用于告知浏览器以何种模式来渲染文档。

严格模式:页面排版和js解析是以该浏览器支持的最高标准(W3C)来执行。

混杂模式:不严格按照标准模式执行,主要用以兼容旧的浏览器,向后兼容。模拟老式浏览器的行为以防止老站点无法工作。说的透明点就是可以实现IE5.5及以下版本的浏览器的渲染模式。

Doctype不存在或格式不正确会导致文档以混杂模式呈现。

那么问题来了,严格模式和混杂模式在样式上有什么不同之处?

  区别:总体会有布局、样式解析和脚本解析三方面的区别。

  1、盒模型:在W3C标准中,如果设置一个元素的宽度和高度,值得是元素内容的宽度和高度,而在Quirks模式下,IE的宽度和高度还包含了padding和border。

  2、设置行内元素的宽高:在标准模式下,给<span>等行内元素设置width和height都不会生效,而在quirks模式下,则会生效。

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

  4、margin:0 auto设置水平居中:使用margin:0 auto在标准模式下可以使元素水平居中,但在quirks模式下却会失效。解决办法:用text-align属性:

    body{text-align:center;}

    #content{text-align:left;}

  5、quirks模式下设置图片的padding会失效

  6、quirks模式下Table中的字体属性不能继承上层的设置

  7、quirks模式下white-space:pre(保留空白)会失效

 那么问题来了,white-space可能的值:

  normal  默认。空白会被浏览器忽略

  pre        空白会被刘看齐保留。其行为方式类似HTML中的<pre>标签

  nowrap  文本不会换行,文本会在在同一行上继续,直到遇到<br>标签为止

  pre-wrap保留空白符序列,但是正常的进行换行

  pre-line  合并空白符序列,但是保留换行符。

  inherit    规定应该从父元素继承white-space属性的值。

原文地址:https://www.cnblogs.com/langee/p/6627720.html