主要涉及知识点:

  • HTML与XHTML
  • HTML与XHTML的区别
  • DOCTYPE与DTD的概念
  • DTD的分类以及DOCTYPE的声明方式
  • 标准模式(Standard Mode)和兼容模式(Quircks Mode)
  • 标准模式(Standard Mode)和兼容模式(Quircks Mode)的区别

HTML与XHTML

  • HTML:超文本标记语言 (Hyper Text Markup Language)
    XHTML:可扩展超文本标记语言 (EXtensible HyperText Markup Language),是一种置标语言。
  • HTML是一种基于标准通用标记语言(SGML)的应用,XHTML则基于可扩展标记语言(XML)
  • XHTML的目标是取代HTML,与HTML4.01几乎相同,是更严格更纯净的 HTML 版本。
  • HTML 和 XHTML 的区别简单来说,XHTML 可以认为是 XML 版本的 HTML,为符合 XML 要求,XHTML 语法上要求更严谨些。

 本质上说,XHTML是一个过渡技术,结合了部分XML的强大功能及大多数HTML的简单特性。建立XHTML的目的就是实现HTML向XML的过渡。在HTML5成为主流之前,Html4.01一直是大多数人使用的Html版本,Html5目标是取代HTML4.01和XHTML1.0标准,旨在提高网页性能,增加页面交互。

HTML与XHTML的区别

XHTML 与 HTML 4.01 标准没有太多的不同。主要的不同体现在下面几点:

  • XHTML 元素必须被正确地嵌套。
  • XHTML 元素必须被关闭。
  • 标签名必须用小写字母。
  • XHTML 文档必须拥有根元素。

DOCTYPE与DTD的概念

文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则,是HTML的验证机制。DOCTYPE标签是一种标准通用标记语言的文档类型声明,声明文档的解析类型,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的DTD(用什么样的文档标准)来解析文档。DTD定义了文档中的元素(标记和属性)和实体,以及相互关系。 通过DTD验证XML文档的有效性。DTD为解析器提供了解析HTML文档的依据。

DTD的分类以及DOCTYPE的声明方式

 由于HTML5不基于 SGML,因此不需要对DTD进行引用;但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
 因此HTML5的DOCTYPE声明:
   <!DOCTYPE html>

 而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型,有以下三种类型:

  • HTML 4.01 Strict DOCTYPE声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  • HTML 4.01 Transitional DOCTYPE声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  • HTML 4.01 Frameset DOCTYPE声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  • XHTML 1.0 Strict DOCTYPE声明:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • XHTML 1.0 Transitional DOCTYPE声明:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • XHTML 1.0 Frameset DOCTYPE声明:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

三种DTD类型的作用说明:

  • Strict : 干净的标记,免于表现层的混乱,与层叠样式表(CSS)配合使用。
  • Transitional :包含 W3C 所期望移入样式表的呈现属性和元素。使用不支持层叠样式表(CSS)的浏览器时使用。
  • Frameset : 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset等同于 Transitional。

标准模式(Standard Mode)和兼容模式(Quircks Mode)

 在W3C标准出来之前,浏览器对页面的渲染没有统一的标准,各个浏览器对同一页面的渲染有一定的差异,而每个浏览器的不同版本对页面的渲染也有一定程度上的差异。而W3C标准出来之后,浏览器对页面的渲染就有了统一的标准。前者对于浏览器使用自己的方式渲染页面的模式,我们称之为Quircks Mode(怪异模式、兼容模式或混杂模式);而对于后者浏览器按照标准解析执行代码的模式,我们称之为Standard Mode(标准模式或严格模式)。在标准模式中,浏览器根据规范呈现页面;在兼容模式中,页面以一种比较宽松的向后兼容的方式显示。其实,还有一种模式叫近标准模式,它与标准模式一致,除了在处理下面这种情况时:如果一个块级元素除了空白文本(空格,tab等字符)外再无其它内容,则它的高度按0处理;如果有子元素,则它的高度不能比子元素大,无论它的font-size多大。
 那么,浏览器解析时到底使用标准模式还是怪异模式?这就和之前提到的DOCTYPE有关了。

  • 标准模式:
  1. XHTML文档包含完整的DOCTYPE声明时,一般以标准模式呈现;
  2. 文档包含严格DTD类型的DOCTYPE声明时,以标准模式呈现;
  3. 文档包含过渡DTD类型的DOCTYPE声明且声明包含URI时,以标准模式呈现。
  • 兼容模式:
  1. 文档不包含DOCTYPE声明或DOCTYPE声明不正确时,以兼容模式呈现;
  2. 文档包含过渡或框架DTD类型的DOCTYPE声明但声明不包含URI时,以兼容模式呈现;
  3. 在IE中,如果DOCTYPE声明在XML之后,以兼容模式呈现。

标准模式(Standard Mode)和兼容模式(Quircks Mode)的区别

 最后总结一下,在标准模式和兼容模式下,页面的呈现主要有哪些区别:

  • 关于盒模型:
    在标准模式下,元素width是内容宽度,即:元素实际width = 元素width + 元素padding + 元素border,(盒子的宽度还要加上元素margin的宽度);
    在兼容模式下,元素width是元素的实际宽度,即:元素width = 元素内容width + 元素padding + 元素border,(盒子的宽度还要加上元素margin的宽度)。

    盒模型:主要针对块级元素,把每个块级元素都想象成一个盒子,每个盒子有外边距(margin)、边框(border)、内边距(padding)、内容(content)。

  • 关于行内元素:
    对于行内元素的垂直对齐样式设置,基于 Gecko 的浏览器(Mozilla Firefox、HotBrowser、Mozilla Suite、Camino)标准模式对齐至基线,怪异模式对齐至底部;
    对于行内元素的高度(height)和宽度(width)的设置,标准模式下不生效,而在兼容模式下会生效。

    四大内核:

    • Trident,主要有IE浏览器以及多核浏览器
    • Gecko,主要有Firefox以及Firefox的衍生浏览器
    • WebKit,主要有Chrome与Chrome的衍生浏览器、Safari以及多核浏览器
    • Presto,之前主要应用于Opera,Opera现已改用Google Chrome的Blink内核。
  • 关于百分比的高度设置:在标准模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的。
  • 关于水平居中设置:在标准模式下,使用margin:0 auto可以使元素水平居中,但在兼容模式下会失效。
  • 关于!important声明:在兼容模式下,IE6/7/8下使用!important声明无效。
  • 其他:兼容模式下,设置图片的padding会失效;table中的字体属性不能继承父元素的字体属性;设置white-space:pre会失效。

转载于:https://www.cnblogs.com/yanqiu/p/8672225.html

HTML学习笔记——DOCTYPE和DTD,标准模式和兼容模式相关推荐

  1. HeadFir st 设计模式学习笔记21-- 解释者(Inter pr eter)模式拾零

    HeadFir st 设计模式学习笔记21-- 解释者(Inter pr eter)模式拾零 1.概述 这个模式是在不能叫做模式,它的作用是实现⼀种语言规范的解释器,比如罗马数字解释器. 2.实例 我 ...

  2. doctype的作用,标准模式和兼容模式的区别

    doctype的作用: DOCTYPE是document type (文档类型) 的缩写. 声明位于文档的最前面,处于标签之前,它不是html标签. 主要的作用是告诉浏览器的解析器使用哪种HTML规范 ...

  3. 浏览器急速模式跟兼容模式导致网站显示不同的问题

    我们知道有些浏览器在浏览网站的时候可以选择急速模式跟兼容模式,不同的模式可能导致页面不一样,原因是在兼容模式的时候浏览器会根据ie版本指定显示,但是我们知道在ie的开发者工具中浏览器模式跟文档模式不一 ...

  4. 360极速模式和兼容模式对页面的影响

    360浏览器模式不同都会对页面有一些出乎意料的效果的影响: 众所周知,360浏览器有两种模式:兼容模式和极速模式.两种模式下,兼容性不同,有时会导致页面效果不尽相同,各有差异. 但模式选择具体如何定的 ...

  5. 用meta name=renderer content=webkit|ie-comp|ie-stand来切换360双核安全浏览器的极速模式和兼容模式

    以下信息摘自360官方网站: 浏览模式: 极速模式.兼容模式及IE9高速模式是360浏览器显示网页时使用的三种模式: 极速模式表示极速模式 兼容模式表示兼容模式 IE9IE10模式表示IE9/IE10 ...

  6. html5和极速模式,浅谈360浏览器6.0版本极速模式与兼容模式_蓝戒的博客

    360浏览器升级到6.0版本后对html5实现了全面兼容,于此同时360 6.0版本浏览器提供了两种模式:1.极速模式 2.兼容模式,也就是说360浏览器为双核浏览器.浏览器最核心的部分是渲染引擎(R ...

  7. android 兼容模式设置,天天安卓模拟器切换极速模式与兼容模式的方法

    天天安卓模拟器是一款非常优秀的安卓模拟器,其为用户提供了一个完善的安卓模拟环境,帮助用户运行安卓上的游戏.应用,而且其为用户提供了诸多的辅助功能,按键操作.手柄操作.全屏.截屏等都能轻松实现,而这款软 ...

  8. 【踩坑】360安全浏览器“极速模式”和“兼容模式”,套路还是bug?

    分享踩坑点: 项目中需要兼容360安全浏览器,大家当然都希望用极速模式打开网站,但是发现总是被兼容模式打开 网址类似 aa.xx.dd.com 网上找了很多地方,有以下两种方法 1.<meta ...

  9. 360极速模式和兼容模式

    360浏览器内核 360浏览器包含了两个内核:谷歌内核和IE内核. 极速模式 代表着高速,意味着是高版本的浏览器.极速模式是以Blink(Webkit)为内核的浏览模式,Blink内核具有更高的网页浏 ...

  10. 安卓学习笔记06:Activity生命周期与启动模式

    文章目录 零.学习目标 一.Activity生命周期 1.了解Activity生命周期 2.Activity生命周期简化图 (1)Activity存在与否 (2)Activity可见与否 (3)Act ...

最新文章

  1. 无事“自动驾驶”,有事“辅助驾驶”?
  2. 【学习笔记】高斯整数、高斯素数、费马平方和(全部相关概念及例题详解)《初等数论及其应用》
  3. 数据结构实验之栈与队列八:栈的基本操作
  4. boost::lockfree::detail::tagged_ptr用法的测试程序
  5. 爸爸我爱您(之十二)
  6. 表单提交防止恶意修改
  7. linux mask 特殊权限位,Linux 特殊权限
  8. 【2021牛客暑期多校训练营9】E Eyjafjalla (倍增,dfs序,主席树)
  9. springboot结合mybatis连接数据库
  10. 由于计算机是中文名ccs软件安装出现错误_UG软件不会解决的二十个问题解决方法总结...
  11. Java编译器IDE-文本编辑器
  12. My Eighty-third Page - 打家劫舍Ⅲ - By Nicolas
  13. css动画怎么暂停,纯CSS代码实现动画的暂停与播放
  14. 联想官方OEM分区制作
  15. 手把手教你Axure-默认元件库(上)
  16. 文件上传利器SWFUpload使用指南(转)
  17. Python时间序列LSTM预测系列教程(6)-单变量
  18. 【理解】经典角点检测算法--Harris角点
  19. C语言中的* 简单记忆方法
  20. 我的世界mod整合包java_[1.7.10]我的世界多MOD整合包-糖果领域

热门文章

  1. Xcode中AutoLayOut的简单使用
  2. 你会如何优化应用程序的性能?
  3. Visio风格源代码组件库,流程图,矢量图,图形编辑,打印,导入,导出,VC++源代码...
  4. SVN服务器端安装过程出现“Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”
  5. memcached—Java操作Memcached
  6. C#使用RabbitMQ(转)
  7. 26. iterator优先于const_iterator、reverse_iterator以及const_reverse_iterator
  8. 有读二本国防计算机学校,好的二本计算机大学
  9. 测度定义_测度论浅谈
  10. pip mysql_config not found_pip安装mysql-python出现mysql_config not found错误