现在面试通常不是很在意以前浏览器兼容问题,可以简单的了解一下有个大概的印象即可。

# 经典真题

  • 什么是 <!DOCTYPE>? 是否需要在 HTML5 中使用?

它是 HTML 的文档声明,通过它告诉浏览器,使用哪一个 HTML 版本标准解析文档。
在浏览器发展的历史中,HTML 出现过很多个版本,不同版本在元素、属性等书写格式上略有差异,如果不预先告诉浏览器,浏览器就不知道我们的文档标准是什么,在这种情况下,大部分浏览器将开启最大兼容模式来解析网页,我们称之为怪异模式。这不仅会降低解析效率,而且会在解析过程中产生一些难以预知的 bug,所以文档声明是必须的。
而文档声明有多种书写格式,对应不同的 HTML 版本,<!DOCTYPE> 这种书写是告诉浏览器,整个文档使用 HTML5 的标准进行解析。

  • 什么是严格模式与混杂模式?

专严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。
混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。
如何区分:浏览器解析时到底使用严格模式还是混杂模式,与网页中的 DTD 直接相关。

  1. 如果文档包含严格的 DOCTYPE,那么它一般以严格模式呈现。 (严格 DTD 一一严格模式)
  2. 包含过渡 DTD 和 UR / 的 DOCTYPE,也以严格模式呈现,但有过渡 DTD 而没有 UR/ (统一资源标识符,2. 就是声明最后的地址) 会导致页面以混杂模式呈现。 (有 URI 的过渡 DTD —— 严格模式;没有 URI 的过渡 DTD —— 混杂模式)<br />
  3. DOCTYPE 不存在或形式不正确会导致文档以混杂模式呈现。(DTD 不存在或者格式不正确 —— 混杂模式)
  4. HTML5 没有 DTD,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。 (HTML5 没有严格和混杂之分)

意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。

  • 列举几条怪异模式中的怪癖行为
  1. 宽高的算法与 W3C 盒模型不同
  2. 在表格中的字体样式不会继承
  3. 怪异模式下可以设置行内元素宽高
  4. 怪异模式下 white-space:pre 会失效

# 不同版本的 HTML 有什么区别

  • 不同 HTML 的版本,可用的元素不同。这是最显著的区别。
  • 不同 HTML 的版本,文档声明方式不同。

# 文档声明概念

HTML 文档通常是文档声明开始,该声明的作用是帮助浏览器确定尝试解析和显示的 HTML 文档类型。
文档声明并非一个 HTML 标签。它是一条 “信息”。

<!DOCTYPE html>

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

# 为什么 HTML5 之前版本的文档声明那么长?

HTML5 不使用 DTD,因为 HTML5 不基于 SGML,所以不使用 DTD。

ML 是置标语言,常见的标记语言有 SGML、HTML、XML、XHTML、HTML5。

  • GML 是第一代置标语言,使文档能明确将标识和内容分开,所有文件使用同样的标示方法

  • SGML 在 GML 的基础上整理的,想成了一套非常严谨的文件描述方法。他的组成包括语法定义、DTD、文件实例 3 部分

  • HTML 抛弃了 SGML 复杂庞大的缺点,继承了 SGML 的很多优点。HTML 最大的特点是简单性和跨平台性。它只使用了 SGML 中很少的一部分标记,例如 HTML4.0 中只定义了 70 余种标记。为了便于在计算机上实现,HTML 规定的标记是固定的,即 HTML 语法是不可扩展的。

  • XML 随着 Web 应用的不断发展,HTML 的局限性也越来越明显地显现了出来,如 HTML 无法描述数据、
    可读性差、搜索时间长等。人们又把目光转向 SGML,再次改造 SGML 使之适应现在的网络需求。
    1998 年 2 月 10 日,W3C (World Wide Web Consortium,万维网联盟) 公布 XML 1.0 标准,
    XML 诞生了。很长一段时间,XML 都作为网络传输的标准数据格式。

  • XHTML 的出现是因为当时的 HTML 语法要求比较松散,这样对网页编写者来说,比较方便,
    但对于机器来说,语信的语法越松散,处理起来就越困难,对于传统的计算机来说,
    还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。
    因此产生了由 DTD 定义规则,语法要求更加严格的 XHTML。

  • HTML5 是 HTML 的第五个修订版该版本不在基于 SGML 了,所以也就不用再引入 DTD 声明了 HTML5 的出现 ,
    其主要的目标是将互联网语义化,以使更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入。

现在国内通常所说的 H5 开发 实际上是 HTML5CSS3ES6 的一个组合大概可以用以下公式说明: HTML5 = HTML + CSS3 + ES6

# 渲染模式

浏览器渲染模式分为 3 种:

  • 怪癖模式(混杂模式) : 保证旧网页在旧浏览器的正常渲染(网景浏览器。IE4)
  • 严格模式(标准格式)
  • 几乎标准模式

对于 HTML文档 来说,浏览器使用文档开头的 DOCTYPE 来决定用怪异模式处理或标准模式处理如果 文档中没有 DOCTYPE 将触发文档的 怪异模式
怪异模式 最明显的影响是会触发怪 异盒模型

DOCTYPE 声明 中, 没有使用DTD声 明或者 使用 HTML4以下的文档 声明时,基本所有的浏览器都是使用 怪异模式 呈现,
其他的则使用 标准模式 解析。

# 严格模式和怪异模式的部分渲染区别

  1. 盒模型的宽高包含内边距和边框,这是 怪异模式 ;盒模型的宽高只包含内容的宽高,这是 严格模式
  2. 设置行内元素的宽高, span 标签等行内元素, 怪异模式 直接生效;而 严格模式 下无效,需要先将 span 转化为块级元素才可以。
  3. 可设置百分比的高度, 严格模式 下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的。
  4. 用 margin:0 auto 设置水平居中在 IE 下会失效使用 margin:0 auto 在 严格模式 下可以使元素水平居中,但在 怪异模式 下却会失效,怪异模式下的解决办法,用 text-align 属性:
body{text-align:center;}
#content{text-align:left;}
  1. 怪异模式 下设置图片的 padding 会失效
  2. 怪异模式 下 Table 中的字体属性不能继承上层的设置
  3. 怪异模式 下 white-space:pre 会失效

过去无法挽回,未来可以改变,有的人成日殚精竭虑,却掀不起什么风浪,有的人却因一念之差,让世界天翻地覆,这就是命运权重。

阅读次数

请我喝[茶]~( ̄▽ ̄)~*

NIDLH 微信支付

微信支付

NIDLH 支付宝

支付宝