一、概述
让CSS样式表生效,DOCTYPE声明是必须的,以前TABLE布局的网页可能DOCTYPE可以省略也可以正常显示。但在DIV CSS布局中虽然DOCTYPE就一段代码却至关重要,影响CSS样式是否生效。少了DOCTYPE html声明有的CSS样式仍是生效,但有的CSS样式是失效的。所以DOCTYPE是必不可少的。
二、DOCTYPE简写
HTML4
代码语言:javascript复制<!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
代码语言:javascript复制<!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>用法
代码语言:javascript复制<!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,你不能使用任何表现层的标识和属性,例如 ,完整代码如下:
<!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
代码语言:javascript复制<!DOCTYPE html>
HTML 4.01 Strict,该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。
代码语言:javascript复制<!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)。
代码语言:javascript复制<!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,但允许框架集内容。
代码语言:javascript复制<!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 来编写标记。
代码语言:javascript复制<!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 来编写标记。
代码语言:javascript复制<!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,但允许框架集内容。
代码语言:javascript复制<!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 支持)。
代码语言:javascript复制<!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中的声明其实是一种回归,回归简单声明方式!
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:Yiiven https://cloud.tencent.com/developer/article/2193105