什么是<!DOCTYPE>?

<!DOCTYPE> 声明不是一个 HTML 标签;它是用来告知 Web 浏览器页面使用了哪种 HTML 版本。

<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前,<!DOCTYPE>声明告知浏览器的解析器用什么文档标准解析这个文档(标准模式)。若声明错误或未声明会导致文档以兼容模式/混杂模式呈现。

<!DOCTYPE> 标签没有结束标签。<!DOCTYPE> 声明不区分大小写。总是先给 HTML 文档添加 <!DOCTYPE> 声明,确保浏览器能够预先知道文档类型。

标准模式与兼容模式

若文档为标准模式,则该文档的排版与JS运作模式都是以该浏览器支持的最高标准运行;

兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

html4.01与html5中的<!DOCTYPE>

在html4.01中,<!DOCTYPE>声明需要引用DTD(文档类型声明),因为它是基于SGML(Standard Generalized Markup Language 标准通用标记语言),DTD 指定了标记语言的规则,确保了浏览器能够正确的渲染内容。html5不基于SGML因此不需要引用DTD。

HTML 5 只有一种<!DOCTYPE> 声明:

HTML5
 <!DOCTYPE html>

HTML 4.01 规定了三种不同的 <!DOCTYPE> 声明,分别是:Strict、Transitional 和 Frameset

HTML 4.01 Strict

不允许使用表现性、废弃元素(如font)以及框架集(如frameset)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

允许使用表现性、废弃元素(如font),不允许使用框架集(如frameset)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

允许表现性元素,废气元素以及框架集。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

其他常见的DOCTYPE 声明

XHTML1.0 Strict

不允许使用表现性、废弃元素(如font)以及框架集(如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

允许使用表现性、废弃元素(如font),不允许使用框架集(如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

允许表现性元素,废气元素以及框架集,文档必须是结构良好的XML文档。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

不允许使用表现性、废弃元素(如font)以及框架集(如frameset),文档必须是结构良好的XML文档,但是允许添加模块(例如为东亚语言提供 ruby 支持)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

HTML 元素和有效 DOCTYPES

以下链接中的表格列出了所有的 HTML5/HTML 4.01/XHTML 元素,以及它们会出现在什么文档类型 (!DOCTYPE) 中,效果如图。

链接:http://www.runoob.com/tags/html-elementsdoctypes.html

文章参考资料:http://www.runoob.com/tags/tag-doctype.html

转载请注明地址:丝瓜 » HTML <!DOCTYPE> 声明详解

转载于:https://www.cnblogs.com/zhengshihui/p/6868419.html

HTML !DOCTYPE 声明详解相关推荐

  1. python开头声明中文_python开头——文件声明 详解

    一.解释器声明 1.声明方式 linux #!/usr/bin/python windowns #!c:/python27/python.exe 放在首行 2.作用 告诉电脑,要用/usr/bin下面 ...

  2. python开头声明_python开头——文件声明 详解

    一.解释器声明 1.声明方式 linux #!/usr/bin/python windowns #!c:/python27/python.exe 放在首行 2.作用 告诉电脑,要用/usr/bin下面 ...

  3. JavaScript 变量声明详解: var, let, const

    JavaScript 中,可以声明变量的关键字有 var.let和const. var 使用 var 定义变量,可以保存任何类型的值.若不初始化变量,变量会保存 undefined. 1. 函数级作用 ...

  4. Cocos技术派 | TS版各种属性声明详解

    先来看一段代码: cc.Class({extends: cc.Component,properties: {userID: 20,userName: "Foobar"} }); 这 ...

  5. syscall指令_linux系统调用-SYSCALL_DEFINEx详解

    系统调用在内核中的入口都是sys_xxx,但其实Linux的系统调用都改为SYSCALL_DEFINE定义的.本文以socket系统调用为例来详解. 1 首先看一下SYSCALL_DEFINE的定义, ...

  6. DOCTYPE声明作用及用法详解

    一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...

  7. python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解

    我的Python环境:3.7 在Python类里声明一个装饰器,并在这个类里调用这个装饰器. 代码如下: class Test(): xx = False def __init__(self): pa ...

  8. php 得到 ts文件,获取TypeScript声明文件.d.ts步骤详解

    这次给大家带来获取TypeScript声明文件.d.ts步骤详解,获取TypeScript声明文件.d.ts的注意事项有哪些,下面就是实战案例,一起来看一下. 一.TypeScript的声明文件就像C ...

  9. c++ 代码_C代码对汇编代码中声明的全局符号的访问方式详解

    首先声明一点:符号的值是地址,该地址上存储的值才是变量,不明白的话看另一篇文章: "静态链接与动态链接的宏观概述及微观详解". (1)对非数组符号的访问,编译器生成访存指令,要想寻 ...

  10. swift. 扩展类添加属性_swift中的声明关键字详解

    原起 学习swift,swift中的关键字当然要了解清楚了,最近在网上看到了关于声明关键字的文章,整理记录一下. 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符 ...

最新文章

  1. 无头结点单链表的逆置_单链表的逆置(不带头结点)
  2. 学界 | 邢波团队提出 contrast-GAN:实现生成式语义处理
  3. citrix POC环境准备
  4. Linux操作系统安装字体笔记
  5. elementUI vxe-table结合使用(通用表格)
  6. 线性表的顺序存储的基本操作
  7. 数组的连续最大子段和
  8. quartus仿真30:D触发器构成的可重复序列111探测器
  9. CLR via C#深解笔记四 - 方法、参数、属性
  10. 现代控制理论电子版_SANXINB01开发板verilog教程V3电子版
  11. mui 框架跨域_MUI框架学习(5)–AJAX跨域问题
  12. 如何快速统计多条线段的长度和?
  13. Qt-命令行更新翻译.ts文件
  14. 想查看微信好友撤回的消息?Python帮你搞定
  15. Linux系统下操作的常用快捷键
  16. springboot项目部署 + vue项目部署
  17. 科技SCI论文正体斜体规定
  18. 微信装修装饰小程序源码开发方案
  19. 打不开磁盘“E:\CentOS 64 位.vmdk”
  20. ARP代理(善意的欺骗)

热门文章

  1. MySQL安装配置详解(5.5 For Windows)
  2. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?
  3. HDU 2148 Score
  4. Node.js中使用pipe拷贝大文件不能完全拷贝的解决办法
  5. 关于c语言中栈和堆释放的问题
  6. Repeater绑定数据库
  7. Android Volley 源码解析(三),图片加载的实现
  8. JetS3t使用说明
  9. 【JAVA笔记——道】Hadoop设计模式--抽象类
  10. poj Ancient Cipher 古代密码