Doctype作⽤? 怪异模式和标准模式如何区分?有何意义?

455 阅读3分钟

Doctype作⽤?

  1. 返回当前文档关联的文档类型定义(DTD). 返回的对象实现了 DocumentType 接口。使用 DOMImplementation.createDocumentType() 方法可以创建一个DocumentType类型的对象。

怪异模式和标准模式如何区分

标准模式

浏览器按照W3C标准解析执行代码,这样用规定的语法去渲染,就可以兼容各个浏览器,保证以正确的形式展示网页。

怪异模式

使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式。这样的弊端就是网页在各个浏览器显示的效果不一样,很难统一。

为什么还要存在怪异模式?

历史原因,在HTML与CSS的标准化未完成之前,不同公司做的浏览器对于渲染的实现采用了不同的方法,当时所产生的网页有的现在还在用,所以为了兼容这些旧网页,现在的浏览器必须保留怪异模式以便正确显示这些网页。在标准模式下,浏览器按照HTML与CSS标准对文档进行解析和渲染;而在怪异模式下,浏览器则按照旧有的非标准的实现方式对文档进行解析和渲染。

如何区分?

  1. 因为HTML和CSS在没有规定化之前,是没有文档说明的。所以浏览器在解析渲染某个网页,可以查看文档是否含有文档说明,若有,则按标准模式来渲染;若没有,则按启动怪异模式,以便正确解析网页!
  2. 在严格模式中 :width是内容宽度 ,元素真正的宽度 = margin一left + border一left一width + padding一left + width + padding一right + border一right一 width + margin一right;
  3. 在怪异模式中 :width则是元素的实际宽度 ,内容宽度 = width 一 ( padding一left + padding一right + border一left一width + border一right一width)
  4. 可设置百分比的高度:在标准模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的
  5. 用margin:0 auto设置水平居中在IE下会失效: 使用margin:0 auto在标准模式下可以使元素水平居中,但在怪异模式下却会失效, 怪异模式下的解决办法,用text一align属性:body{text一align:center};#content{text一align:left}
  6. 可以设置行内元素的高宽: 在标准模式下,给span等行内元素设置wdith和height都不会生效,而在怪异模式下,则会生效。
  7. 怪异模式下设置图片的padding会失效
  8. 怪异模式下white一space:pre会失效
  9. 怪异模式下Table中的字体属性不能继承上层的设置

意义?

随着标准一致性越来越重要,浏览器开发商不得不面临一个艰难的抉择:逐渐遵循w3c的标准是前进的方向。但是改变现有的css,完全去遵循标准,会使许多旧网站或多或少的收到破坏,如果浏览器突然以正确的方式解析现存的css,陈旧的网站的显示必然会受到影响。所以,所有的浏览器都需要提供两种模式,混杂模式服务于旧世规则,严格模式服务于标准规则。