<!DOCTYPE>声明--文件类型定义
作用:告诉浏览器该文件的类型(DTD),让浏览器的解析器知道该以什么样的规范(文档规范)解析这个文档,
该声明必须位于HTML第一行,它不属于HTML标签,如果没有该声明或者声明格式不正确都会导致文档以兼容模式出现。
严格模式:又称标准模式,是指浏览器按照W3C标准解析HTML代码。
混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。(自己能支持的方式)
如何区分:浏览器解析的时候使用严格模式还是混杂模式与网页中的DTD直接相关。
HTML5为什么只需要写<!DOCTYPE HTML> ?
HTML5不基于SGML,因此不需要对DTD进行引用,但是需要DOCTYPE来规范浏览器的行为,让浏览器按照他们应该的方式来运行。
HTML5基于SGML,因此需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
具体的说:
1.width不同
在严格模式中 :width是内容宽度 ,元素真正的宽度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width + margin-right;
在兼容模式中 :width则是元素的实际宽度 ,内容宽度 = width - ( padding-left + padding-right + border-left-width + border-right-width)
2.兼容模式下可设置百分比的高度和行内元素的高宽
在Standards模式下,给span等行内元素设置wdith和height都不会生效,而在兼容模式下,则会生效。
在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的。
3.用margin:0 auto设置水平居中在IE下会失效
使用margin:0 auto在standards模式下可以使元素水平居中,但在兼容模式下却会失效(用text-align属性解决)
body{text-align:center};#content{text-align:left}
4.兼容模式下Table中的字体属性不能继承上层的设置,white-space:pre会失效,设置图片的padding会失效
- Doctype可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
- 当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性。为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式
- 在标准模式中,浏览器以其支持的最高标准呈现页面,;
- 在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。
- 模式触发浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法。
- 如果XHTML、HTML 4.01文档包含形式完整的DOCTYPE,那么它一般以标准模式呈现。
- 包含过渡DTD和URI的DOCTYPE也导致页面以标准模式呈现,但是有过渡DTD而没有URI会导致页面以混杂模式呈现。
- DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。
html5既然没有DTD,也就没有严格模式与宽松模式的区别,html5有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。