问:
Doctype作用?严格模式与混杂模式如何区分?它们有何意义?答:
DOCTYPE是文档类型声明,出现在html文档的第一行,处于<html>
标签之前。告知浏览器的解析器用什么文档标准解析这个文档。严格模式是指浏览器按照最高标准来解析文档;
混杂模式则是使用比较宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
浏览器根据doctype是否存在以及其声明的DTD来决定呈现模式。Doctype切换是浏览器用来区分遗留文档和符合标准的文档的手段。无论是否编写了有效的css,如果选择了错误的Doctype,那么页面将以混杂模式呈现。
问:
HTML5 为什么只需要写<!DOCTYPE HTML>
?答:
HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
SGML
标准通用标记语言。
是现在常用的超文本格式的最高层次标准,是一种指定文档标记的标准,是可以定义标记语言的元语言。
HTML和XML都是从它派生出来的。
通过SGML,每一个HTML页面都需要在相同的地方创建并附加一个DTD(文档类型定义)节点。
DTD
文件类型定义(Document Type Definition),定义XML和HTML文件中元素、元素的属性、元素的排列方式、元素包含的内容等等。
在解析页面时,浏览器将使用这些规则检查页面的有效性并且采取响应的措施。
浏览器通过分析页面的DOCTYPE声明来了解要使用哪个DTD,由此知道要使用HTML的哪个版本。
DOCTYPE
文档类型声明。它是指示 web 浏览器关于页面使用哪个 HTML 版本。
<!DOCTYPE>
声明必须是 HTML 文档的第一行,位于<html>
标签之前。- 在HTML4.01中, 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
- HTML5 不基于 SGML,所以不需要引用 DTD。
DOCTYPE作用:
- 浏览器根据Doctype的声明进行有效性验证。浏览器需要知道要使用什么DTD来正确的处理页面。
- 用于声明浏览器呈现模式
html5中的DOCTYPE:
<!DOCTYPE html>
浏览器模式
当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性。为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式
- 标准模式:浏览器根据规范呈现页面
- 混杂模式:页面以一种比较宽松的向后兼容的方式显示。
混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。
浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法。
- 如果XHTML、HTML 4.01文档包含形式完整的DOCTYPE,那么它一般以标准模式呈现。
- 包含过渡DTD和URI的DOCTYPE也导致页面以标准模式呈现,但是有过渡DTD而没有URI会导致页面以混杂模式呈现。
- DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。
html5既然没有DTD,也就没有严格模式与宽松模式的区别,html5有相对宽松的语法,已经尽可能大的实现了向后兼容。