一、DOCTYPE标签的定义与作用

  <!DOCTYPE>是一个用于声明当前HTMl版本,用来告知web浏览器该文档使用是哪种 HTML 或者 XHTML 规范来解析页面,以便浏览器更加准确的理解页面内容,更加良好地展现内容效果!

二、DOCTYPE标签的特点

  1.<!DOCTYPE> 标签没有结束标签;

  2.<!DOCTYPE>声明被所有主流浏览器支持;

  3.<!DOCTYPE>声明不是一个HTML标签,在HTML5中是可以不区分大小写的;

  4.<!DOCTYPE>声明必须位于HTML文档中最前面,处于<html>标签之前;

  注:HTML4.01是基于SGML的,需要以<!DOCTYPE>声明引用一个DTD(文档类型定义),用来保证浏览器按照DTD指定的标记规则解析网页内容!HTML5不基于SGML,所以不需要指定DTD。

三、DOCTYPE与浏览器模式

  1.声明与否的影响

  <!DOCTYPE>声明的前面是没有任何内容的,如果有其他内容(空格除外)就会使浏览器在 IE下开启怪异模式渲染网页;如果浏览器进入怪异模式,就会按自己的方式解析渲染页面。那么,在不同的浏览器下,显示的样式效果会不一致。

  如果不写文档DOCTYPE声明,浏览器将无法获知HTML或XHTML文档的类型,也会进入怪异模式;还有在IE6以下版本永远进入怪异模式;

  但是,只要我们对文档DOCTYPE做了正确的声明,浏览器就会进入标准模式;浏览器会按照W3C的标准来解析渲染页面,那么,在所有的浏览器下,显示的样式效果会保持一致。因此, <!DOCTYPE>声明还是很有必要的。

  2.标准模式和兼容模式

  若文档为标准模式,则该文档的排版与JS运作模式都是以该浏览器支持的最高标准运行;兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

四、DOCTYPE常见声明类型

  HTML中<!DOCTYPE>常见声明类型共有8种,分别是html5有1种,HTML 4.01和XHTML 1.0都有3种,XHTML 1.1有1种,它们的写法如下:

  1.HTML5 <!DOCTYPE>声明——》<!doctype html>

  2.HTML 4.01和XHTML 1.0

    strict包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

    transitional该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

    framesets该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。

  3.XHTML 1.1规定了一种声明, 等同于 XHTML 1.0 Strict,但允许添加模型。

五、DOCTYPE对HTML标签的影响

  html版本经过了几次的升级,每次升级都会弃用一些不适用的旧标签,而增加某些新的html标签。因此,对于不同html版本的doctype文档类型声明,能合法使用的html标签也是有所不同。比如:

  <article>和<aside>标签,能在html5中能使用,而在HTML 4.01和XHTML中就不能使用;

  <center>标签,在html5和XHTML1.0版本中是不可用的,而在HTML4.01和XHTML1.1的<!DOCTYPE>声明中,只有Transitional和Frameset是可用的!由此可见,<!DOCTYPE>声明的html版本,也决定了哪些html标签可以合法使用!

以上内容原文转自(https://www.liudaima.com/a/45.html),如有侵权,联系删除

HTML中doctype的作用及几种类型详解的更多相关文章

  1. 领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: V ...

  2. [ 转载 ] Java开发中的23种设计模式详解(转)

    Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...

  3. 域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  4. 转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析.得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于 ...

  5. C#中方法的参数的四种类型

    C#中方法的参数有四种类型:       1. 值参数类型  (不加任何修饰符,是默认的类型)       2. 引用型参数  (以ref 修饰符声明)       3. 输出型参数  (以out 修 ...

  6. 《从0到1学习Flink》—— Flink 中几种 Time 详解

    前言 Flink 在流程序中支持不同的 Time 概念,就比如有 Processing Time.Event Time 和 Ingestion Time. 下面我们一起来看看这几个 Time: Pro ...

  7. 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

    Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解   多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...

  8. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  9. 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

随机推荐

  1. oracle表按日期分区创建、新增、修改、删除

    Oracle11G分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多 ...

  2. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)

    前言: 想要学好一门技术,最起码要对他有一定的了解,起码听说过相应的底层原理的东西吧,最起码你要有一点能和别人交流的内容吧,下面是我精简的一点内容,希望对于大家了解netty能有一点帮助 Netty是 ...

  3. 动态ip服务器 动态ip服务器的常用连接方式 收藏版

    动态ip服务器目前比较常用的是VPS也叫作虚拟机.目前比较小型的vps服务器与普通电脑没什么区别,最大的区别就是用户连接zhidao服务器内的ip是固定不变的.而服务器运行的ip是可以动态的. 实现动 ...

  4. Beta冲刺 —— 5.28

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.组员一起学习Git分支管 ...

  5. JUC : 并发编程工具类的使用

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JUC是什么 1.JUC定义 JUC,即java.util.concurrent 在并发编程中使用的 ...

  6. Java实现 LeetCode 838 推多米诺(暴力模拟)

    838. 推多米诺 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌. 同样地, ...

  7. Java实现 LeetCode 835 图像重叠(暴力)

    835. 图像重叠 给出两个图像 A 和 B ,A 和 B 为大小相同的二维正方形矩阵.(并且为二进制矩阵,只包含0和1). 我们转换其中一个图像,向左,右,上,或下滑动任何数量的单位,并把它放在另一 ...

  8. Java实现 蓝桥杯VIP 算法训练 整数平均值

    题目描述 编写函数,求包含n个元素的整数数组中元素的平均值.要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值. (样例说明:5为输入数据的个数,3 4 0 0 2 是以空格隔 ...

  9. Java实现蓝桥杯模拟递增三元组

    问题描述 在数列 a[1], a[2], -, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a ...

  10. Java实现Fibonacci取余

    Description Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. Input 多 ...