知识点:DOCTYPE与浏览器模式

本文解释了DOCTYPE的作用及其对浏览器解析文档的影响,包括严格模式与混杂模式的区别,并介绍了HTML5中DOCTYPE的变化。

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

问:
Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

答:
DOCTYPE是文档类型声明,出现在html文档的第一行,处于 <html> 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。

严格模式是指浏览器按照最高标准来解析文档;
混杂模式则是使用比较宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
浏览器根据doctype是否存在以及其声明的DTD来决定呈现模式。

Doctype切换是浏览器用来区分遗留文档和符合标准的文档的手段。无论是否编写了有效的css,如果选择了错误的Doctype,那么页面将以混杂模式呈现。

问:
HTML5 为什么只需要写 <!DOCTYPE HTML>

答:
HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

SGML

标准通用标记语言。
是现在常用的超文本格式的最高层次标准,是一种指定文档标记的标准,是可以定义标记语言的元语言
HTML和XML都是从它派生出来的。

通过SGML,每一个HTML页面都需要在相同的地方创建并附加一个DTD(文档类型定义)节点。

DTD

文件类型定义(Document Type Definition),定义XML和HTML文件中元素、元素的属性、元素的排列方式、元素包含的内容等等。

在解析页面时,浏览器将使用这些规则检查页面的有效性并且采取响应的措施。

浏览器通过分析页面的DOCTYPE声明来了解要使用哪个DTD,由此知道要使用HTML的哪个版本。

DOCTYPE

文档类型声明。它是指示 web 浏览器关于页面使用哪个 HTML 版本。

  • <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。
  • 在HTML4.01中, 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
  • HTML5 不基于 SGML,所以不需要引用 DTD

DOCTYPE作用:

  • 浏览器根据Doctype的声明进行有效性验证。浏览器需要知道要使用什么DTD来正确的处理页面。
  • 用于声明浏览器呈现模式

html5中的DOCTYPE:

<!DOCTYPE html>

浏览器模式

当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性。为了实现这一点,他们创建了两种呈现模式:标准模式和混杂模式

  • 标准模式:浏览器根据规范呈现页面
  • 混杂模式:页面以一种比较宽松的向后兼容的方式显示。
    混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。

浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法。

  • 如果XHTML、HTML 4.01文档包含形式完整的DOCTYPE,那么它一般以标准模式呈现。
  • 包含过渡DTD和URI的DOCTYPE也导致页面以标准模式呈现,但是有过渡DTD而没有URI会导致页面以混杂模式呈现。
  • DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。

html5既然没有DTD,也就没有严格模式与宽松模式的区别,html5有相对宽松的语法,已经尽可能大的实现了向后兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值