DOCTYPE声明方式
工作了这么久不知道DOCTYPE的作用是什么,更不知道不同声明方式之间的差异,水平小菜凭这点一下就暴露了,惭愧惭愧!查阅文档整理如下:
1. 标准模式与混杂模式
由于历史发展的原因,不同浏览器对同一个页面的解析渲染是有差异的,没有统一的标准。1994年10月,万维网联盟(W3C)由 Tim Berners Lee 于美国MIT设立。截止2018年,W3C已发布了200多项影响深远的Web标准及实施指南。严格遵循W3C标准的web页面称之为“标准模式”(也叫“严格模式”),而页面以一种比较宽松的向后兼容的方式显示的则称之为“混杂模式”(也称“怪异模式”),浏览器究竟用什么模式来渲染页面,就看DOCTYPE的声明方式。DOCTYPE是document type (文档类型) 的缩写,DOCTYPE 声明本身不是标签,声明必须写在HTML文档的第一行。
2. 标记语言的发展
来看下标记语言的发展,方便下文理解,标准通用标记语言(Standard Generalized Markup Language,SGML),是1986年出版发布的一个信息管理方面的国际标准(ISO 8879)。该标准定义独立于平台和应用的文本文档格式,索引和链接信息,为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签(tag)。制定SGML的基本思想是把文档内容于样式分开。
SGML规定了在文档中嵌入描述标记的标准格式,指定了描述文档结构的标准方法。SGML是一个包含超文本链接的综合语言,在Web上使用的HTML格式是使用固定标签集的一种SGML文档。
从上图可以看出,html是SGML的一个应用,xml是简化了SGML并用来取代SGML的,xhtml就是html从SGML专用xml语法的结果。不过HTML5已经不是SGML的子集。
3. 什么是DTD?
DTD 文档类型定义(Document Type Definition),规定了标记语言的规则,它是XML1.0版规格的一部分,是html文件的验证机制,属于html文件组成的一部分。DTD 是一种保证html文档格式正确的有效方法。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
4. DOCTYPE声明
4.1 HTML 5只有一种声明方式,HTML5 不基于 SGML,不需要引用 DTD,所以HTML5没有“标准模式”与“混杂模式”的区别。
<!DOCTYPE html>
4.2 HTML4.01有三种声明方式,在HTML 4.01 中,<!DOCTYPE> 声明需要引用 DTD,因为 HTML 4.01 基于 SGML。
4.21 HTML 4.01 Strict (严格版本)
该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets),它提供了最干净的结构化标记,免于表现层的混乱。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4.22 HTML 4.01 Transitional(过渡版本)
该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4.23 HTML 4.01 Frameset(基于框架的 HTML 文档)
该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
4.3 XHTML 1.0 提供了三种DTD声明可供选择:
4.31 XHTML 1.0 Strict(严格版本)
同HTML严格版本。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4.32 XHTML 1.0 Transitional(过渡版本)
同HTML过渡版本。必须以格式正确的 XML 来编写标记。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.33 XHTML 1.0 Frameset(基于框架的 HTML 文档)
等同于 XHTML 1.0 Transitional,但允许框架集内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
4.4 XHTML 1.1
该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
5. 选择什么样的声明方式
随着技术的不断发展和完善,标准的应用越来越广泛和深入,现在大型的电商网站都是采用HTML5的声明方式,这也是一个大家共同认可的发展趋势,我想,未来的网站不再需要考虑兼容性,到那时网站的建设将更加方便,更加高效!
DOCTYPE声明方式相关推荐
- DOCTYPE声明的几种类型
DOCTYPE声明的几种类型 DOCTYPE 声明决定着浏览器怎么去解析和渲染当前页面,所以对于页面来说是很重要的. HTML5时代,统一用 <!DOCTYPE html> 这样简单的方式 ...
- DOCTYPE声明作用及用法详解
一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...
- vaadin_Vaadin提示:以声明方式构建UI
vaadin 如果您使用过GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用. 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处. Vaadin提供了多种开 ...
- Vaadin提示:以声明方式构建UI
如果您使用了GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用. 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处. Vaadin提供了多种开箱即用的工具和 ...
- 为什么要用!DOCTYPE声明
实例: 我们经常会看到类似这样的代码: <!DOCTYPE html> <html> <head> <title>文档的标题</title> ...
- doctype声明、浏览器的标准、怪异等模式
doctype 标准(严格)模式(Standards Mode).怪异(混杂)模式(Quirks Mode),如何触发,区分他们有何意义? 触发标准模式 1.加DOCTYPE声明,比如: <!D ...
- DOCTYPE 声明
DOCTYPE 声明标题 文章目录 DOCTYPE 声明标题 Doctype作用?严格模式与混杂模式如何区分?它们有何意义? Doctype定义 作用 严格模式与混杂模式如何区分? 意义 Doctyp ...
- JavaScript函数的两种声明方式,你了解多少?
函数的两种声明方式 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...
- 2019-7-22 [HTML] 基本结构 DOCTYPE声明 标签:[title meta 标题 段落 换行 加粗 斜体 下划线] 注释 特殊字符 img标签 a标签
文章目录 0.HTML网页技术(基础) 1 HTML概述 1.1 什么是HTML? 1.2 Hello,HTML! 2 HBuilder的安装与使用 2.1 安装HBuilder 2.2 使创建项目 ...
最新文章
- 准确度量 持续改进—网站分析驱动目标达成zz
- 1.3 循环神经网络模型-深度学习第五课《序列模型》-Stanford吴恩达教授
- Oracle10g的flashback drop
- .NET6 新功能和新生态
- Win7(包括32和64位)使用GitHub
- Wireshark-003过滤器
- django数据库错误相关问题
- Charles安装破解和基础配置
- vue动态绑定背景图片的透明度
- 【Halcon轮廓提取】
- ERROR 999999: Error executing function. The table name is invalid. No spatial reference exists.
- MySQL数据库知识大全
- element-ui input 身份证号码验证
- matlab中点乘与乘的区别
- Unity拼图小游戏
- 商城APP软件开发要素有哪些
- #贴改色膜前,你必须要知道的事情
- 数组里面有值,但是console.log出来后打开却是空
- 汉明码(计算机组成原理)没听课也能懂
- 比例导引 matlab,单步龙格库塔比例导引弹道计算matlab源程序
热门文章
- 【算法】分块初步详解
- 暴力破解———罗马数字逆向解法,猜年龄利用位数信息,罗马数字的枚举解法
- 局域网采用BT方式(P2P)传输大文件解决方案
- 用java下载apk解析包出错_安装apk解析包时出现错误怎么办
- 艾蒂机器人_奥特曼格斗进化3艾斯机器人怎么玩厉害_奥特曼格斗进化3艾斯机器人使用心得分享_斗蟹游戏网...
- js获取url参数中文乱码问题
- 一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别
- 【Android】史上最简单,一步集成侧滑(删除)菜单,高仿QQ、IOS。
- mysql修改排序规则
- OC中的方法、设置器与访问器、便利初始化函数及便利构造器的相关问题