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
过度型(Transitional)
允许使用过期的标签,不允许使用Framesets
框架型(Frameset)
如果使用frames,必须使用这种dtd
XHTML 1.0 DTDs
严格型(Strict)
不允许使用过期的用于表现层的标签(如<font>),不允许使用Framesets。还必须符合xhtml的严格标准,比如必须要有html,head,body,doctype。每个标签必须闭合。所有必须小写,等等。
过度型(Transitional)
必须符合xhtml的严格标准,但是允许使用过期的标签。
框架型(Frameset)
同上,但是允许使用frames
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.
谷歌了一番发现如果要触发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。
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。
相关文章推荐
- html、xhtml文档类型doctype总结
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">详解
- 总结htmlfile:未知的运行时错误
- Dreamweaver - <!DOCTYPE html>
- 微信支付开发若干问题总结,API搞死人(谢谢ζั͡ޓއއއ๓http://www.thinkphp.cn/code/1620.html)血淋淋的教训,第二次栽这里了
- select函数总结 www.cnblogs.com/hnrainll/archive/2011/05/05/2038186.html
- 黑马程序员_HTML学习知识简单总结
- SVN使用教程总结(http://www.cnblogs.com/armyfai/p/3985660.html)
- HTML学习基础-<!DOCTYPE html>
- HTML和HTML5总结
- html知识点总结
- php html_entity_decode使用总结
- html知识点总结
- HTML的doctype申明
- HTML-总结
- 初学者必看的html基础知识总结
- <!DOCTYPE html>很重要
- HTML经典模板总结(地址)
- html常规标签总结
- 我的HTML总结之HTML发展史