您的位置:首页 > Web前端 > HTML

HTML DOCTYPE总结

2011-08-18 17:41 295 查看
这两天花了点时间在doctype上,把零散的知识归了下档,记录下doctype的总结。

html的doctype本身的功能声明了当前html的版本:包括可使用的tag,tag是否需要闭合,是否大小写敏感,属性是否需要双引号等等。但是由于历史原因,某些浏览器有精神分裂症,导致其游走在正常状态(standards mode)和变态状态(quirks mode)之间。所以不同的doctype又会触发某些浏览器的quirks mode,这个是doctype的另一个功能:让浏览器渲染引擎选择用什么模式来渲染页面。

doctyp的语法:

常规的语法有2种:

<!DOCTYPE root-element PUBLIC "FPI" ["URI"] [

<!-- internal subset declarations -->

]>

或者

<!DOCTYPE root-element SYSTEM "URI" [

<!-- internal subset declarations -->

]>

root-element指的是当前doucment的根元素(html就是html)。SYSTEM和PUBLIC表示是哪种类型的dtd:一种是内部系统的(private system),一种是公开的(open to the public)。如果选择SYSTEM后面应该跟着写上URI。如果选择PUBLIC后面必须有一个FPI (Formal Public Identifier),然后再是URI。

HTML 4.01 DTDs

严格型(Strict)

不允许使用过期的用于表现层的标签(如<font>),不允许使用Framesets

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


过度型(Transitional)

允许使用过期的标签,不允许使用Framesets

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


框架型(Frameset)

如果使用frames,必须使用这种dtd

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


XHTML 1.0 DTDs

严格型(Strict)

不允许使用过期的用于表现层的标签(如<font>),不允许使用Framesets。还必须符合xhtml的严格标准,比如必须要有html,head,body,doctype。每个标签必须闭合。所有必须小写,等等。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


过度型(Transitional)

必须符合xhtml的严格标准,但是允许使用过期的标签。

<!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" xml:lang="en" lang="en">


框架型(Frameset)

同上,但是允许使用frames

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


XHTML 1.1 DTD

XHTML 1.1 is the most current finalized revision of XHTML, introducing support for XHTML Modularization. XHTML 1.1 has the stringency of XHTML 1.0 Strict.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ar" dir="rtl" xmlns="http://www.w3.org/1999/xhtml">


谷歌了一番发现如果要触发quirks mode,基本没有通用规则可言,如果要查看具体哪种doctype的写法会触发浏览器哪种模式请参阅
browser comparison chart

下面归纳了下比较通用的规则:

1.通常FPI存在,但是uri不存在或者不写doctype会触发quirks mode。

2.对于具有3种mode的browser,触发all most standard mode的doctype是html4.0 html4.01 xhtml1.0的过渡型.

Firefox, Safari, Chrome, Opera (since 7.5), IE8 and IE9存在all most standard mode。

3.IE6的standard mode,doctype必须是第一行

注释写在doctype之前(或者xml的声明<?xml version="1.0" encoding="iso-8859-1"?>:是xhmtl的情况下)会触发quirks mode。IE7不存在这个情况。

4.Windows IE 6 and 7, Opera prior to 7.5 and Konqueror的standard mode更接近于all most standard mode。

最后想说doctype尽量写常见的几种,这样避免IE不同版本的众多不同mode。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: