详解HTML文档声明(DOCTYPE)

2023-05-16

HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型。本文将详细介绍文档声明DOCTYPE。

特点

文档声明必须是HTML文档的第一行、且顶格显示,对大小写不敏感。因为任何放在DOCTYPE前面的东西,比如批注或XML声明,会令IE9或更早期的浏览器触发怪异模式(后面的渲染模式会介绍)。

由于文档类型声明不是标签,因此不应具有关闭标签。

版本

1.jpg

2.jpg

声明

HTML5

<!DOCTYPE html>

在HTML5之前,文档声明一般有三种类型:严格型strict、过渡型transitional、框架frameset

严格型DTD包含所有HTML元素和属性,但不包含展示性的和弃用的元素(如font);而过渡型或宽松型(loose)则包含展示性和启用的元素。

HTML4.01

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

XHTML1.0

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

XHTML1.1 等同于XHTML1.0 Strict

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

【DTD】

DTD称为文档类型定义,它可以定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。在HTML中,DTD使用XML定义了HTML标签规范。

由于HTML5不基于SGML,所以不需要引用DTD。但是需要doctype来启用标准模式(后面的渲染模式会介绍)。HTML5的语法元素来自SGML、HTML、XHTML1.X,使它成为一种有自己规则的合成语言。

HTML、XML和SGML这三者的关系并不容易区分。HTML是SGML的一个实例,它的DTD作为标准被固定下来,因此,HTML不能作为定义其它置标语言的元语言。

XML是SGML的一个子集,严格地讲,XML也还是SGML。与HTML不同的是,XML有DTD,因而也可以像SGML那样作为元语言,来定义其它文件系统或置标语言。

如果把置标语言分为元置标语言和实例置标语言的话,SGML和XML都是元置标语言,而HTML和由XML派生的XHTML都是实例置标语言。

渲染模式

在很久以前的网络上,页面通常有两种版本:为网景(Netscape)的Navigator准备的版本以及为微软(Microsoft)的Internet Explorer准备的版本。

当W3C创立网络标准后,为了不破坏当时既有的网站,浏览器不能直接起用这些标准。因此,浏览器采用了两种模式,用以把能符合新规范的网站和老旧网站区分开。

浏览器排版引擎有三种模式:怪异模式(Quirks mode)、接近标准模式(Almost standards mode)以及标准模式(Standards mode)。

在怪异模式下,排版会模拟Navigator4与Internet Explorer 5的非标准行为。为了支持在网络标准被广泛采用前,就已经建好的网站,这么做是必要的。

在标准模式下,行为即由HTML与CSS的规范描述的行为。

在接近标准模式下,只有少数的怪异行为被实现

对HTML文档来说,浏览器使用文档开头的DOCTYPE来决定用怪异模式处理或标准模式处理。如果文档中没有DOCTYPE将触发文档的怪异模式。

怪异模式最明显的影响是会触发怪异盒模型。在CSS中盒模型被分为两种,第一种是W3C的标准模型,第二种是怪异盒模型。不同之处在于怪异盒模型的宽高定义的是可见元素框的尺寸,而不是元素框的内容区尺寸。

原文地址:https://www.cnblogs.com/xiaohuochai/p/6213200.html

想要了解更多HTML、web前端知识,可访问 web前端学习!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解HTML文档声明(DOCTYPE) 的相关文章

  • CSS:滚动条从窗口下方几个像素开始

    我想修复我的标题 标题始终位于页面顶部 并且我的整个内容 包括页脚在内的所有内容 都可以滚动 标题高度为 60 px 如下所示 将其固定在顶部不是问题 我想解决的问题 仅使用CSS 是让滚动条从距顶部 60 像素以下的位置开始 正如您所看到
  • 关于在 Bootstrap 中对齐网格项的 CSS 指南

    我正在尝试显示项目网格 并且图片的高度和宽度都不同 并且细节可能长或短 导致页面上的换行符数量不同 This is what I want it to look like And here is what it actually looks
  • 带有路径连接器的 jQuery 可拖动小部件

    参考该图像 Block1 和Block2 都是可拖动的 我的问题是 如何在两个块之间制作红色链状连接器 要求是链条应该延伸到块被拖动的地方 请提供任何教程 学习材料的指示 谢谢 有许多 Jquery 插件可用于创建数据库可视化或流程图的连接
  • 是否可以实现异步跨域文件上传?

    有可能的 参见下文 首先我用这张图来解释一下异步文件上传可以实现 对不起 我已经关闭了我的一个域 该图像现在消失了 不过 这确实是一个很好的图像 这是在我发现 Stack Overflow 可以通过 Imgur 上传图像之前 正如您所看到的
  • Jquery - 自动计算输入字段

    我正在尝试使下面的代码正常工作 我非常感谢您的帮助 基本上它是计算三个输入字段的总和 然后与其他两个字段相乘 最终结果应显示在输入字段 pcamount 中 这是 jsFiddle 中的示例 http jsfiddle net D98PW
  • 垂直对齐 li 内的图像和文本

    我试图将列表元素中的图像和一些文本垂直对齐到中间 但没有运气 eg ul li img src somepath sometext li li img src somepath2 sometext2 li ul 我该怎么做 谢谢 假设您的列
  • 使用 CSS 更改文本选择颜色?

    我目前正在开发一个网站 我想更改文本选择颜色 我已经有点工作了 这是我的样式表中的代码 部分 selection background FF0099 color black text shadow none moz selection ba
  • 查找 div 元素中的所有链接并禁用它们

    假设我有一些如下所示的 HTML 元素 div span a href some link Click me a span div Hello everybody Click a href some link else me a to do
  • 通过鼠标和触摸在画布上绘图

    我想在画布上绘图 使用鼠标效果很好 但我必须如何修改代码才能使其在 iPad 或 Nexus 上运行 link http jsfiddle net FgNQk 6 var canvas document getElementById can
  • mysqli_query() 需要至少 2 个参数,其中 1 个参数在? [复制]

    这个问题在这里已经有答案了 每次运行这个 php ini 时 我都会遇到同样的 3 个错误 我不知道我做错了什么 有人可以帮忙吗 以下是错误 2014 年 5 月 5 日 19 20 50 美洲 芝加哥 PHP 警告 mysqli quer
  • 如何在 Ruby 中获取网页的 HTML 源代码 [重复]

    这个问题在这里已经有答案了 在 Firefox 或 Safari 等浏览器中 打开网站后 我可以右键单击该页面 然后选择以下内容 查看页面源代码 或 查看源代码 这显示了该页面的 HTML 源代码 在 Ruby 中 是否有一个函数 也许是一
  • 使用 MathJax 排版/渲染动态内容

    我使用 MathJax 来显示数学方程 它在静态编写的数学中运行良好 但不适用于动态添加的数学 这是我的代码 Static div span x b pm sqrt b 2 4ac over 2a span div Dynamic div
  • 除了text/css之外还有其他样式类型吗? [复制]

    这个问题在这里已经有答案了 可能的重复 style type text css 还有什么 https stackoverflow com questions 6077905 style type text css what else is
  • 使 div 更大并在悬停时向上动画更大的部分

    当用户将鼠标悬停在 div 上时 我试图将 div 向上设置动画 我可以对 div 进行动画处理 使其变大 但动画是向下发生的 我试图将 div 的底部保持在同一位置 并平滑地向上增加 div 的大小 请参阅 jsfiddle 这里 htt
  • 返回 Web 浏览器中 HtmlElement 的所有属性

    我需要从我的网络浏览器获取所有属性 当前 我正在使用 GetAttribute 但这样 我需要知道属性的名称 想象一下我不知道我的网络浏览器中有什么 我的 C 代码 StringWriter strWriter new StringWrit
  • 窗口位置替换 - 超时帮助? JavaScript问题

    我曾尝试找到一种方法 在我的代码中添加超时 然后再重定向您 我用谷歌搜索并找到了一些帮助 但他们都没有达到我的预期 这会提示用户出生年份并计算年龄 大致 如果用户未满18岁 则带他们去迪士尼乐园 否则允许进入 函数年龄按钮 var AskD
  • 如何根据角度6中的条件禁用复选框?

    我的html代码 div div div div
  • 使用 PHP 的 HTML 中的选项字段

    我想根据从下拉列表中选择的区域名称搜索员工列表 我可以将数据库中的区域名称检索到 PHP HTML 的下拉列表中 但现在我很困惑如何将下拉列表中的选定选项传递给 PHP 中的 SQL 查询 我还想要索引号 选定的选项 我的代码如下
  • 在现有 HTML 输入字段中加载图像/徽标 - UIWebView

    因为我是编程新手 所以我做了这样的事情 void completeUserFieldsForWebView UIWebView webView withUsername NSString username TextField Which h
  • 将文本字段输入限制为仅数字

    我搜索过谷歌 但我能找到的所有解决方案都非常复杂和冗长 我需要的是将我正在进行的调查中的文本字段的输入限制为仅数字 最快 最干净的方法是什么 我使用的是严格的 HTML 4 01 和 ECMAScript 提前致谢 最快

随机推荐

  • CSS设置占位符文本的对齐方式

    HTML的placeholder属性指定一个简短提示 xff0c 用于描述input字段或文本区域 xff08 textarea xff09 的预期值 xff0c 即占位符文本 短提示在用户输入值之前显示在字段中 在大多数浏览器中 xff0
  • 谈谈HTML的短语标签及其作用

    在HTML中 xff0c 短语标签是专用标签 xff0c 用于指示文本块具有结构意义 xff0c 执行与文本格式标签类似的特定操作 例如 xff0c abbr标签表示该短语包含缩写词 短语标签的一些例子有 xff1a abbr strong
  • 常见的类名id名命名参考规范

    web前端命名规范 下面是常见的命名参考规范 xff1a 主体 头部 xff1a header 内容 xff1a content container 尾部 xff1a footer 导航 xff1a nav 侧栏 xff1a sidebar
  • Vue.js开发的4个基本ES2015特性

    ES2015 又名ES6 是当前JavaScript语言的规范 如果您是JavaScript新手或者最近没有更新JavaScript知识 xff0c 那么在ES2015中有许多新特性可以使开发变得更好 更有趣 如果您是Vue开发人员 xff
  • VueJS项目的5个很棒的样板/模板

    你要开始一个重要的Vue项目吗 为了确保您从一个坚实的基础开始 xff0c 您可以使用一个模板 也称为样板 骨架 启动器或脚手架 xff0c 而不是从npm init或vue init开始 许多经验丰富的开发人员都以开源模板的形式收集了关于
  • 如何构建出色的Vue组件

    很少有人最初编写Vue组件时打算将其开源 我们大多数人开始为自己编写组件的原因 xff1a 我们有一个问题 xff0c 然后决定通过构建一个组件来解决它 有时我们发现自己想要在代码库的新位置解决相同的问题 xff0c 所以我们提取组件并对其
  • 在Vue.js中定义组件模板的7种方法

    Vue js 使用了基于 HTML 的模板语法 xff0c 允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据 所有 Vue js 的模板都是合法的 HTML xff0c 所以能被遵循规范的浏览器和 HTML 解析器解析 在Vue
  • 深入CSS,让网页开发少点“坑”

    通常我们在学习CSS的时候 xff0c 感觉语法很容易掌握 xff0c 实际应用中却碰到各式各样难以填补的 坑 xff0c 为避免大家受到同样的困惑与不解 xff0c 本文详细讲解了CSS中优先级和Stacking Context等高级特性
  • Pixhawk参数调整

    Pixhawk copter固件的默认参数是为3DR QUAD COPTER设计的 如果你想获得一个最佳的飞行表现的话 你需要对一些参数做一些调整 调整的参数主要是Extended Tuning下面的Roll和Pitch的PID xff0c
  • 用于Vue.js应用程序的4个AJAX模式

    Vue没有提供实现AJAX的正式方法 xff0c 而且有许多不同的设计模式可以有效地使用 每种方法都有其优缺点 xff0c 应该根据需求进行判断 您甚至可以同时使用多个 在本文中 xff0c 我将向您展示在Vue应用程序中实现AJAX的四个
  • 预渲染vue.js应用程序(使用node或laravel)

    服务器端渲染现在非常流行 但它也并非没有缺点 预渲染是一种替代方法 xff0c 在某些情况下甚至可能更好 下面我们来看一下如何预渲染vue js应用程序 在本文中 xff0c 我们将探讨预渲染如何与vue js一起工作 xff0c 并看两个
  • CSS实现不定宽高垂直水平居中的几种方法

    垂直居中 xff0c 在 CSS 中是一个老生常谈的问题 xff0c 面试的时候也会时常被提及 所以 xff0c 今天我们就来聊聊 9 种不同的居中方法 有常见的 flex transform absolute 等等 也有 CSS3 的网格
  • JavaScript中的JSON和JSONP

    简单地使用json并不能支持跨域资源请求 xff0c 为了解决这个问题 xff0c 需要采用jsonp数据交互协议 众所周知 xff0c js文件的调用不受跨域与否的限制 xff0c 因此如果想通过纯web端跨域访问数据 xff0c 只能在
  • 了解JavaScript中的类

    javascript是一种基于原型的语言 xff0c javascript中的每个对象都有一个名为 原型 的隐藏内部属性 xff0c 可用于扩展对象属性和方法 直到最近 xff0c 勤奋的开发人员使用构造函数来模仿JavaScript中面向
  • 深入解析Javascript闭包及实现方法

    什么是闭包和闭包的几种写法和用法 1 什么是闭包 闭包 xff0c 官方对闭包的解释是 xff1a 一个拥有许多变量和绑定了这些变量的环境的表达式 xff08 通常是一个函数 xff09 xff0c 因而这些变量也是该表达式的一部分 闭包的
  • 理解JavaScript中的语法和代码结构

    所有编程语言都必须遵守特定的规则才能运行 确定编程语言的正确结构的这组规则称为语法 许多编程语言主要由具有语法变化的类似概念组成 在本教程中 xff0c 我们将介绍JavaScript语法和代码结构的许多规则和约定 功能性和可读性 在开始使
  • 深入CSS,让网页开发少点“坑”

    通常我们在学习CSS的时候 xff0c 感觉语法很容易掌握 xff0c 实际应用中却碰到各式各样难以填补的 坑 xff0c 为避免大家受到同样的困惑与不解 xff0c 本文详细讲解了CSS中优先级和Stacking Context等高级特性
  • 如何巧用 canvas(画布)为图片加水印?

    在前端中 xff0c 如何巧用 canvas xff08 画布 xff09 为图片加水印 xff1f 下面本篇文章就来给大家介绍一下使用 canvas 给图片添加水印的方法 有一定的参考价值 xff0c 有需要的朋友可以参考一下 xff0c
  • EKF(扩展卡尔曼滤波)参数理解

    EKF VELNE NOISE xff1a 速度在坐标轴 NE 方向上的噪声 通常是在 0 上下波动 设置方法 xff1a 将飞机上电静置若干分钟 xff08 时间尽量长一点 xff09 记录飞 行日志 xff0c 由 EKF3 的 IVN
  • 详解HTML文档声明(DOCTYPE)

    HTML文档通常以类型声明开始 xff0c 该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型 本文将详细介绍文档声明DOCTYPE 特点 文档声明必须是HTML文档的第一行 且顶格显示 xff0c 对大小写不敏感 因为任何放在DOC