标签的定义与使用
<!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 规定了三种文档类型:strict、transitional 以及 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 规定了三种文档类型:strict、transitional 以及 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 方式之一。
推荐阅读