!DOCTYPE

  !DOCTYPE是什么:

  在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(文档类型定义 DTD)解析文档(比如HTML或XHTML规范);

  !DOCTYPE声明不属于 HTML 标签;tag; 它是一条指令,告诉浏览器编写页面所用的标记的版本

  HTML 4.01 中的 doctype 需要对 DTD 进行引用,因为 HTML 4.01 基于 SGML。而 HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(html 5简化了这种声明,意在告诉浏览器使用统一的标准即可, 这个统一的标准去哪里找啊,www.w3.org)。

  常见的DOCTYPE如下:

HTML4.01 strict:不允许使用表现性、废弃元素(如font)以及frameset。声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML4.01 Transitional:允许使用表现性、废弃元素(如font),不允许使用frameset。声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML4.01 Frameset:允许表现性元素,废气元素以及frameset。声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML1.0 Strict:不使用允许表现性、废弃元素以及frameset。文档必须是结构良好的XML文档。声明:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML1.0 Transitional:允许使用表现性、废弃元素,不允许frameset,文档必须是结构良好的XMl文档。声明: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset:允许使用表现性、废弃元素以及frameset,文档必须是结构良好的XML文档。声明:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
HTML 5: <!doctype html>

  HTML5中的!doctype是不区分大小写的;

  我的DW默认的声明模板是下面这样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  我的webstrom中默认的模板是这样的:

<!DOCTYPE html>

  现代的浏览器需要不同模式, 既要呈现久远的HTML界面, 不至于界面结构混乱不堪, 也需要呈现W3C标准的界面:

  1:标准的显示方式就是---标准模式(strict),

  2:不标准的显示方式---怪异模式(没定义doctype或者doctype错误等等情况,都会让界面进入quirk模式),

  3:既可以显示标准的,也能够显示不标准的(过渡类型的文档类型定义transitional);

  

  规范和时间线

  HTML规范和时间线: 

规范

推荐

HTML 3.2

1997年1月14日

HTML 4.0

1998年5月24日

HTML 4.01

1999年12月24日

  XHTML规范和时间线:

规范

草案/提议

推荐

XHTML 1.0

  

2000 年 1 月 26 日

XHTML 1.0 修订版

  

2002 年 8 月 1 日

XHTML 1.1

  

2001 年 5 月 31 日

XHTML Modules

  

2001 年 4 月 10 日

XHTML Modules 1.1

2006 年 7 月 5 日

  

XHTML Basic

  

2000 年 12 月 19 日

XHTML Basic 1.1

2006 年 7 月 5 日

  

XHTML Events

  

2003 年 10 月 14 日

XHTML Events 2

2007 年 2 月 16 日

  

XHTML Print

  

2006 年 9 月 20 日

XHTML Media Types

2002 年 8 月 1 日

  

XForms 1.0

  

2003 年 10 月 14 日

XForms 1.0 (SE)

  

2006 年 3 月 14 日

XForms 1.1

2007 年 2 月 22 日

  

XHTML 2.0

2006 年 7 月 26 日

  

XLink

  

2001 年 6 月 27 日

HLink

2002 年 9 月 13 日

  

  !DOCTYPE切换也许是让浏览器进入正确呈现模式并正确显示网页的一种有效手段,前提是你注意到了各种浏览器的不一致,并能积极主动地避免各种问题。

  一般来说 !DOCTYPE后面会有一个包含命名空间的html标签:

<html xmlns="http://www.w3.org/1999/xhtml">

  xmlns是XHTML namespace的缩写。
  作用:由于xml允许定义自己的标记,但你定义的标记和其他人定义的标记有可能相同,但表示不同的含义。当文档交换或者共享的时候就容易产生错误。为避免这种错误产生,xml采用名字空间声明,允许你通过一个网址来识别你的标记。
  XHTML是HTML先xml过度的标记语言,它需要符合xml文档规则,因此,也需要定义名字空间,又因为XHTML1.0不能自定义标识,所以,它的名字空间都相同,就是:http://www.w3.org/1999/xhtml

  

额外资料:文档模式

  参考自:打开

  文档模式也回影响到文档类型, <meta http-equiv="X-UA-Compatible">与<!DOCTYPE>结伴影响文档模式 ;

  所有IE浏览器在默认情况下(<meta http-equiv="X-UA-Compatible">与<!DOCTYPE>均没有),是采用怪异模式(Quirks);当有<!DOCTYPE>时,均采用浏览器版本对应的标准模式(如IE8就采用IE8标准模式,IE11就采用IE11标准模式)。

  现在要注意的是,当出现<meta http-equiv="X-UA-Compatible">时,文档模式将会如何呢?我们首先了解一下IE11下它的content属性值范围吧,具体范围如下:

    IE=5、IE=7、IE=EmulateIE7、IE=8、IE=EmulateIE8、IE=9、IE=10、 IE=11、 IE=Edge

  1. IE=5:表示采用怪异模式;

  2. IE=7等纯数字的值:表示采用对应IE版本的标准模式,即使不是以<!DOCTYPE>作为文档第一行,文档模式依旧使用标准模式;

  3. IE=EmulateIE7等含EmulateIE字符串的值:表示采用模拟对应IE版本的模式,如果是以<!DOCTYPE>作为文档第一行则采用该版本的标准模式,否则采用怪异模式

  4. IE=Edge:表示采用浏览器自身版本的文档模式,如IE11,以<!DOCTYPE html>作为文档第一行则采用IE11标准模式,否则采用怪异模式。

  IE的怪异模式:

  IE进入backCompat的模式的方式,常见的原因有

  1:DOCTYPE写错了,

  2:DOCTYPE没有写,

  3:DOCTYPE前面有别的字符;

  ....

  实例:

_____
<!DeeeeeeeeeeeOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitionaleeeeeeeeee//EN" "http://www.ssssssssw3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<style>
body{margin:0;padding:0;width:1000px;padding:200px;
}
</style>
<body><div id="div0"></div><script>function getStyle(el, prop) {return el.currentStyle[prop];};var node = document.createElement("div");node.innerHTML = document.compatMode ;//
        document.body.appendChild( node );node = document.createElement("div");node.innerHTML = document.getElementsByTagName("body")[0].offsetWidth;document.body.appendChild( node );</script>
</body>
</html>

  IE兼容模式开启的话, 相对于当前的界面会以IE5.5的方式进行渲染,如果IE浏览器以IE5.5的方式进行解析, 会导致以下问题;

  1. 盒模型:

    在怪异模式下,盒模型为IE盒模型而非标准模式下的W3C 盒模型:在 IE 盒模型中, box width = content width + padding left + padding right + border left + border right, box height = content height + padding top + padding bottom + border top + border bottom。 而在 W3C 标准的盒模型中,box 的大小就是 content 的大小。

  2. 图片元素的垂直对齐方式:

    对于inline元素和table-cell元素,在 IE Standards Mode 下 vertical-align 属性默认取值为baseline。而当inline元素的内容只有图片时,如table的单元格table-cell。在 IE Quirks Mode 下,table单元格中的图片的 vertical-align 属性默认为bottom,因此,在图片底部会有几像素的空间。

  3. <table>元素中的字体:

    CSS 中,描述font的属性有font-familyfont-sizefont-stylefont-weigh,上述属性都是可以继承的。而在 IE Quirks Mode 下,对于table 元素,字体的某些属性将不会从body或其他封闭元素继承到table中,特别是 font-size属性。

  4. 内联元素的尺寸:

    在 IE Standards Mode 下,non-replaced inline 元素无法自定义大小,而在 IE Quirks Mode 下,定义这些元素的widthheight 属性,能够影响该元素显示的大小尺寸。

  5. 元素的百分比高度:

    CSS 中对于元素的百分比高度规定如下,百分比为元素包含块的高度,不可为负值。如果包含块的高度没有显式给出,该值等同于“auto”(即取决于内容的高度)。所以百分比的高度必须在父元素有声明高度时使用。

    当一个元素使用百分比高度时,在 IE Standards Mode 下,高度取决于内容的变化,而在 Quirks Mode 下,百分比高度则被正确应用。

  6. 元素溢出的处理:

    在 IE Standard Mode 下,overflow取默认值 visible,即溢出可见,这种情况下,溢出内容不会被裁剪,呈现在元素框外。而在 Quirks Mode 下,该溢出被当做扩展box来对待,即元素的大小由其内容决定,溢出不会被裁剪,元素框自动调整,包含溢出内容。

  有关文档模式的参考资料:open

DOCTYPE是什么鬼?文档模式又是什么鬼?相关推荐

  1. 关于 IE的文档模式的指定

    IE定义文档兼容性 文档兼容性可定义 Internet Explorer 呈现网页的方式. 本文将介绍文档兼容性.如何为网页指定文档兼容性模式以及如何确定网页的文档模式. 简介 为了帮助确保您的网页在 ...

  2. 文档模式引起的浏览器兼容问题

    最近做的一个网页,在本地打开都是非常完美,可以兼容常见的浏览器,但是放到服务器上就不行了,在ie的兼容模式下,打开F12发现文档模式一直是IE7 .为此,查询了很多关于浏览器兼容的问题. 基本上就是说 ...

  3. HTML DOCTYPE 标签 -- DTDs 文档类型声明

    来源:http://www.dreamdu.com/xhtml/tag_doctype/ 14.1. HTML DOCTYPE 标签 -- DTDs 文档类型声明 DOCTYPE 标签 -- 定义了标 ...

  4. html 浏览器文档模式,调整:浏览器模式lE8十文档模式8是怎样操作

    本文将讨论IE8浏览器如何确定用以渲染网站的文档模式,如怪异模式(又称IE5模式)和标准模式(更多资料,英文:http://en.wikipedia.org/wiki/Quirks_mode).该内容 ...

  5. IE文档模式的切换,Quirks模式

    使用文档类型DocType.这样可以避免使用Quirks模式 如:使用IE7文档模式 方法: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 ...

  6. 文档模式:标准模式、混杂模式

    一. 背景:  由于历史的原因,不同浏览器对页面的渲染是不同的,甚至同一浏览器的不同版本也是不同的.然后这时候就出现了一个至关重要的标准规范:W3C标准. 在W3C标准出台之前,不同的浏览器在页面的渲 ...

  7. ie浏览器设置文档模式

    本文来自:http://blog.csdn.net/itmyhome1990/article/details/50331057 项目在IE浏览器中打开默认是Quirks模式,导致兼容性不太好 当然可以 ...

  8. html中ie9文档模式,IE9:强制IE9浏览器模式和文档模式(IE9: Force IE9 browser mode and document mode)...

    IE9:强制IE9浏览器模式和文档模式(IE9: Force IE9 browser mode and document mode) 在IE9中,我的网页显示为Browser Mode: IE9 Co ...

  9. FEATURE_BROWSER_EMULATION及IE “浏览器模式”和“文档模式”

    目录 参考: 一.FEATURE_BROWSER_EMULATION 二.IE "浏览器模式"和"文档模式" 参考: 小心IE9|IE10|IE11渲染模式下的 ...

最新文章

  1. Windows内核加载器概念学习
  2. 异步执行和多线程编程的关系
  3. JAVA中的onkey_onKeyListener无法在虚拟键盘上工作
  4. mysql_fetch_array 失败_无语的出错,mysql_fetch_array()
  5. LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)
  6. 如何让 Mac在运行 Windows时享受极致体验?Parallels Desktop 16给你答案!
  7. C语言,利用条件语句判断是否为三角形并输出面积
  8. MATLAB 格拉布斯准则代码
  9. 怎么把手机屏幕投射镜像到电脑上面?
  10. ruby通过ftp下载文件
  11. matlab fprintf和disp,matlab中 fprintf 和disp的用法
  12. 最近的收获以及清明节的安排
  13. 微信小程序开发:集成微信支付功能
  14. 蓝桥杯 2015 javaB组 校赛
  15. 两场面试,一次心灵洗礼
  16. python入门教程陈孟林_Python基础教程学习路线
  17. 【精】聊聊HDFS的高可用架构
  18. 七周成为数据分析师 | 数据库
  19. Eclipse中更改tomcat版本
  20. MPLS 配置远端LDP会话实验 详解

热门文章

  1. 《Docker技术入门与实战》——2.4 本章小结
  2. Linux下安装rlwrap
  3. CentOS 漏洞修补
  4. 4.IT-解决方案-4-Cluster-Win2K3
  5. 2021/11/24 微软亚州研究院游记
  6. CNCF 云原生系列文章
  7. 互联网协议 — UDP 用户数据报协议
  8. 全虚拟化与半虚拟化的实现方式
  9. Linux_KVM虚拟机
  10. 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3