网页开头的doctype(文档类型) 的作用是什么?

本文深入探讨了DOCTYPE声明在HTML和XHTML中的作用,解释了它如何影响浏览器的渲染模式,包括QuirksMode、StandardsMode和AlmostStandardsMode。文章详细介绍了HTML和XHTML的DOCTYPE声明的不同模式,如strict、transitional和frameset,以及它们各自的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单来说就是告诉我们的浏览器采用什么方式渲染页面。

具体些:

DOCTYPE是document type(文档类型的)的简写,它必须放每个XHTML页面在所有的标识文档和代码之上。它是用来说明你的XHTML或HTML是什么版本。需要注意一下的是: 在HTML 5 中,DOCTYPE 是不区分大小写;不过对于XHTML、Polyglot HTML,DOCTYPE 这几个字母需要大写。如果怕和我一样容易忘记的话,就都默认大写就好啦。<!--more-->

其中浏览器的渲染模式主要是有三种:Quirks Mode(混杂模式、怪异模式、兼容模式。因为翻译不同的原因)、Standards Mode(标准模式、严格模式)、Almost Standards Mode(几乎标准模式)。

而浏览器之所以可以识别我们页面想要的版本就是DTD的存在(文档类型定义,浏览器会根据里面所规定的文档规则来读取你的标识的)。

HTML 和 XHTML 的DOCTYPE 声明都有 strict/transitional/frameset 三种模式。 strict 模式禁止所有 presetational or deprecatedelements(例如 font 标签)以及 frameset标签();transitional 模式只禁止了 frameset标签;frameset 模式与 transitional 模式相同,并且允许 frameset 标签。

XHTML 1.0 提供了三种DTD声明可供选择:

  • 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  • 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如 ,完整代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  • 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 我们选择什么样的DOCTYPE 理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。 注:上面说的”表现层的标识、属性”是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。 打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难

更加全面、标准的论述可以参考文档 ActivatingBrowser Modes with Doctype

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值