<!DOCTYPE> 标签的定义与使用

2022-10-15,,,,

<!doctype>标签定义   

    

  <!doctype> 声明位于文档中最前面的位置,处于<html>标签之前。<!doctype> 声明不是一个html标签,它是告知web浏览器该页面使用了哪种html版本(规范),浏览器用此版本(规范)对该文档进行解析,渲染
       <!doctype> 可声明的 dtd 有三种:分别是严格版本(strict)过渡版本(transitional)、以及基于框架的版本(frameset),若文档不遵循其dtd规范,则此文档中的代码不但不能通过代码校验,并且有可能无法正常显示。

 

 1 <!doctype html>
 2 <html>
 3     <head>
 4         <!--html5示例-->
 5         <meta charset="utf-8"> 
 6         <title>文档标题</title>
 7     </head> 
 8     <body>
 9         文档内容......
10     </body>
11 </html>

 

 

<!doctype>标签的使用

1 <!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd">

 

  在以上声明中,此文档的根元素被声明为html,他在公共标识符被定义为 “-//w3c//dtd html 4.01//en” 的dtd中进行了定义,浏览器会明白如何寻找与该公共标识符匹配的dtd,如果找不到,浏览器将会使用公共标识符后面的 url 来寻找dtd的位置。

  -/+:"-“表示组织名称未注册,internet 工程任务组(ietf)和万维网协会(w3c)并非注册的 iso 组织,”+"表示组织名称已注册;
  dtd:指公开文本类,即所用的对象类型。默认为dtd;
  html:公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。默认为html;
  url: 指定所引用对象的位置。
 

 

html的文档类型

html4.01 的文档类型

html 4.01 规定了三种文档类型:stricttransitional 以及 frameset

  严格版本(strict) 的dtd 包含所有 html 元素和属性,但不包括表象或过时的元素(如 font )。框架集是不允许的。

1 <!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd">

  过渡版本(transitional) 的dtd 包含所有 html 元素和属性,包括表象或过时的元素(eg:font ),框架集是不允许的。

1 <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">

  基于框架的版本(frameset) 的dtd 与 html 4.01 transitional 相同,但是允许使用框架集内容。

1 <!doctype html public "-//w3c//dtd html 4.01 frameset//en" "http://www.w3.org/tr/html4/frameset.dtd">

 

html5 的文档类型

html4.01 中的doctype需要对 dtd 进行引用,因为 html4.01 基于 sgml。而 html5 不基于sgml,因此不需要对 dtd 进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。

1 <!doctype html>

 

xhtml1.0 的文档类型

xhtml 1.0 规定了三种文档类型:stricttransitional 以及 frameset

  严格版本(strict) 的dtd 包含所有 html 元素和属性,但不包括表象或过时的元素(如 font )。框架集是不允许的。结构必须按标准格式的 xml 进行书写。

1 <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

  过渡版本(transitional) 的dtd 包含所有 html 元素和属性,包括表象或过时的元素(如 font )。框架集是不允许的。结构必须按标准格式的 xml 进行书写。

1 <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

  基于框架的版本(frameset) 的dtd 与 xhtml 1.0 transitional 相同,但是允许使用框架集内容。

1 <!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 支持)。

1 <!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">

 

 

三种类型文档的区别

       严格版本:
              它将文档结构与表现形式实现了更高的分离,所以,页面的外观要用css来控制。

       过渡版本:
              它包含了html4.01版本的全部标记,方便网页开发者顺利地从html的使用过渡到xhtml

       基于框架的版本:
              它使用<frameset>以框架的形式将网页分为多个文档。w3c是推荐使用xhtml的,而且使用xhtml的话可以更顺利地通过w3c对网页页面的验证

 

 

注意

       1. 页面引用哪种规范就要用那种规范允许或推荐使用的标签。

       2. 如果没有指定有效的doctype声明,大多数浏览器都会使用一个内建的默认dtd。在这种情况下, 浏览器会用内建的dtd来试着显示你所指定的标记,这将违背html规范的意义,不建议使用这种方式。

       3. 当doctype申明缺失或者格式不正确时,文档会以兼容模式呈现。
           标准模式:排版以及js运行模式都是以浏览器支持的最高标准运行;
           兼容模式:页面以宽松的向后兼容(向老版本兼容)方式显示,模拟老浏览器的行为防止(老)站点无法正常工作。

 

 

其他

       <!doctype html> 是 html5 中唯一的 doctype,也被视作将网页 “升级” 到 html5 的第一步。很多国外网站的<!doctype><head>之间都会有一段注释,如:

1 <!—[if ie 6 ]><html class="ie ielt9 ielt8 ielt7 ie6" lang="en-us"><![endif]—>
2 <!—[if ie 7 ]><html class="ie ielt9 ielt8 ie7" lang="en-us"><![endif]—>
3 <!—[if ie 8 ]><html class="ie ielt9 ie8" lang="en-us"><![endif]—>
4 <!—[if ie 9 ]><html class="ie ie9" lang="en-us"><![endif]—>
5 <!—[if (gt ie 9)|!(ie)]><!—><html lang="en-us"><!—<![endif]—>

 

       该代码作用于 css,来写一些针对ie各版本的样式差异。先判断用户用的哪个 ie 版本,然后在标签上加上该版本的 class,这样可以方便 hack。
css 文件是这样写的:

1 .ie6 xxx {};
2 .ie7 xxx {};

       这是目前最好的 hack 方式之一。

《<!DOCTYPE> 标签的定义与使用.doc》

下载本文的Word格式文档,以方便收藏与打印。