Fully Understand DOCTYPE Statement

使用vscode自动生成html文档时会自动在文档第一行添加<!DOCTYPE html>标签,前两天还遇到有的网页在浏览器里第一行报错的情况。我才发现自己一直没注意到这个标签,所以来扫荡一下这个知识点。

1.定义及作用:

(1).使浏览器采用正确的模式解析页面。若doctype格式正确。浏览器将采用Standards模式,若没有指定doctype,浏览器采用Quirks模式。格式错误、丢失URL会使浏览器采用Quirks模式解析页面。不同浏览器处理过渡期doctype不一致,IE和Opera使用Standards模式,Netscape6和旧版本的Safari采用Quirks模式,Netscape7、Mozilla1和新版本的Safari使用Netscape的Almost Standards模式。

(2).指定一个规则集来解释你接下来文档里的标记

2.语法结构:(DOCTYPE声明必须在<html>标签之前)

<!DOCTYPE 根元素 可用性 "注册//组织//类型 标签 定义//语言" "URL">

例子:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

字段说明:

根元素:顶级元素类型,默认HTML

可用性:默认PUBLIC(可公开访问的对象)||SYSTEM(系统资源,如本地文件或URL)

注册:指定组织是否由ISO注册。默认+(组织名称已注册)||-(未注册的组织如IETF和W3C)

组织:负责创建和维护你所引用的DTD的组织名称

类型:所引用的对象类型,默认DTD

标签:对所引用文本的描述名称,默认HTML,后面可带版本号

定义:

语言:文本语言,采用ISO 639语言代码(大写两个字母),默认EN

URL:所引用对象的位置

3.对于网页首行报错的猜想

因为添加了doctype声明,浏览器采用Standards模式(浏览器支持的最高标准)解析页面,浏览器中某些标签不够规范就可能会报错,因为容错率比较低。如果删去这个声明,浏览器采用Quirks模式,兼容性更好,就可能不会报错。

4.HTML5的不同

HTML5只需要写<!DOCTYPE html>,因为HTML5不基于SGML,不需要引用dtd文档(也就是不需要第二个作用),但是需要规范浏览器的行为(第一个作用)。而HTML4.01基于SGML,需要引用dtd

猜你喜欢

转载自www.cnblogs.com/ilmare-notebook/p/9439902.html