!DOCTYPE html文档类型声明

HTML
423
0
0
2023-01-16

一、概述

让CSS样式表生效,DOCTYPE声明是必须的,以前TABLE布局的网页可能DOCTYPE可以省略也可以正常显示。但在DIV+CSS布局中虽然DOCTYPE就一段代码却至关重要,影响CSS样式是否生效。少了DOCTYPE html声明有的CSS样式仍是生效,但有的CSS样式是失效的。所以DOCTYPE是必不可少的。

二、DOCTYPE简写

HTML4

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 

HTML5

<!DOCTYPE html>
<html> 

三、兼容性

兼容所有现代浏览器

四、谁在使用HTML5声明

腾讯,新浪,网易,百度,阿里等大型门户/平台都已使用HTML5声明方式

五、注意事项

无论使用何种工具创建我们的HTML文档,确保文档编码统一才是唯一目标。

来自CSDN博友的论述

默认情况下,Firefox浏览器和IE浏览器的解释标准是不一样的。

默认情况下,Firefox浏览器和IE浏览器的解释标准是不一样的。 如果一个网页没有声明DOCTYPE,它就会以默认的DOCTYPE解释下面的HTML或XHTML。 在同一种标准下,不同浏览器的解释模型都有所差异,如果声明标准不同,不用我说,您自己想就可以了。 学习网页标准,浏览器兼容,从哪里开始您自己决定,但是,请认识DOCTYPE:

<!DOCTYPE>定义

  • * DOCTYPE是Document Type(文档类型)的简写,用来告知浏览器该文档使用哪种 HTML 或 XHTML 规范;
  • * 不属于HTML或XHTML标签,是一种声明,不需要闭合;
  • * 必须位于HTML或XHTML文档第一行
  • * 大小写不敏感
  • * 所有浏览器都支持 <!DOCTYPE> 声明

<!DOCTYPE>用法

<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

以上代码, 第一行:声明文档的根元素是 html, 第二行:在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中进行了定义,浏览器将明白如何寻找匹配此公共标识符的 DTD 第三行:如果浏览器匹配不到第二行中的标识符,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置 什么是DTD? DTD叫文档类型定义,DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。 有几种DTD种类?

  • 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

常用的 DOCTYPE 声明

在2019年,常用的也就只有HTML5和HTML4.01(已经很少了)

HTML 5

<!DOCTYPE html>

HTML 4.01 Strict,该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

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

HTML 4.01 Transitional,该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

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

HTML 4.01 Frameset 该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 Strict,该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional,该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset ,该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1,该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

HTML5声明为何这么简单? 在 HTML 4.01 中有三种 <!DOCTYPE> 声明。在 HTML5 中只有一种:<!DOCTYPE html>,这是为什么呢? HTML 4.01 中的 DOCTYPE 需要对 DTD 进行引用,因为 HTML 4.01 基于 SGML。而 HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 DOCTYPE 来规范浏览器的行为。 HTML5中的声明其实是一种回归,回归简单声明方式!