美文网首页
了解DOCTYPE和浏览器渲染模式

了解DOCTYPE和浏览器渲染模式

作者: 7天苹果 | 来源:发表于2017-08-02 20:52 被阅读172次

DOCTYPE

DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 DTD)。通常情况下,DOCTYPE 位于一个 HTML 文档的最前面的位置,位于根元素 HTML 的起始标签之前。因为浏览器必须在解析 HTML 文档正文之前就确定当前文档的类型,以决定其需要采用的渲染模式,不同的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScript 脚本的解析。尤其是在 IE 系列浏览器中,由 DOCTYPE 所决定的 HTML 页面的渲染模式至关重要。

浏览器解析HTML方式


有三种解析方式:

  • 非怪异(标准)模式
  • 怪异模式
  • 部分怪异(近乎标准)模式

我们通常用到的就是标准模式。在标准模式下,那么浏览器就必须老老实实地按照W3C的标准来解析渲染页面,这样一来,我们的页面在所有的浏览器里显示的就都是一个样子了。
理想是美好的,但现实总是不如我们所愿。怪异模式就不遵从W3C的标准,用于历史原因,它尝试模拟更旧的浏览器行为。
在出现这两种渲染模式之后,一些浏览器(那些基于 Mozilla 的 Gecko 渲染引擎的,或者 Internet Explorer 8 在 strict mode 下)还尝试于在这两种模式之间寻求妥协,于是便产生了“近乎标准”(almost standards) 模式。它会实施一种表单元格尺寸的怪异行为,除了这一点,其他都符合W3C的标准。

如何决定哪种模式渲染

我们可以根据页面开始的文档(DocumentType)声明来判断用何种渲染模式。如果要使用标准模式,推荐使用<!DOCTYPE html>来声明HTML文档。
但是当我们出现下面几种情况是,就会触发怪癖模式:

  • 缺少文档声明
  • 文档声明错误
  • 在ie6,7,8,9的DocumentType之前放注释
<html>
<head></head>
<body>
<script>
    document.write(document.compatMode);
</script>
</body>
</html>

上面这段代码无论在哪个浏览器中执行所返回的结果都是一致的,页面上会显示 “BackCompat”。document.compatMode 这个属性最初其实是由IE所创建的。这是一个只读的属性,只拥有两个返回值:

  • BackCompat:标准兼容模式未开启;
  • CSS1Compat:标准兼容模式已开启。

怪癖模式的影响

怪癖模式带来的影响主要是css布局,怪癖模式和标准模式他们拥有一个比较突出的不同,就是对于盒模型的解析。
对于“盒模型”一词并没有明确的文档定义,它是开发人员描述 CSS 中块级元素的一种约定俗称。但是,由于历史的原因,早期的IE将盒子的margin、padding 和 border 的宽度都算在了width里。


另外也值得一提的是,对于行内元素的垂直对齐。标准模式下,基于 Gecko 的浏览器将会对齐至基线;而在怪癖模式下,它们会以底部为基准对齐。

相关文章

  • 了解DOCTYPE和浏览器渲染模式

    DOCTYPE DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 ...

  • XHTML,HTML,XML区别,link和@import区别,

    doctype(文档类型)的作用是什么? 告诉浏览器用何种渲染模式来渲染页面 浏览器标准模式和怪异模式之间的区别是...

  • html header

    标准模式 没有就是混杂模式(浏览器自动渲染) 告诉浏览器用这个页面是中文页面 ...

  • html标签——Html学习笔记1

    文档类型声明,告诉浏览器如何渲染页面;若不加,渲染会用怪异模式渲染 lang属性告...

  • HTML相关的面试题

    问题选自这里 doctype(文档类型)的作用是什么? 告诉浏览器用何种渲染模式来渲染页面。 在浏览器中有三种渲染...

  • HTML总结

    1.doctype的意义? 1)让浏览器以标准模式渲染;(css盒模型有标准和IE模式,造成不兼容)2)让浏览器知...

  • 前端面试题总结【15】:Doctype作用? 严格模式与混杂模式

    声明位于文档中的最前面,处于 标签之前。告知浏览器以何种模式来渲染文档。 严格模式的排版和...

  • HTML1

    这个表示文档声明,告诉浏览器用什么标准去渲染网页不加该标签表示为混杂模式(怪异模式)...

  • 关于<!doctype html> 和 <me

    严格模式和混杂模式 触发模式 浏览器根据DOCTYPE是否存在以及使用的哪种DTD...

  • DTD声明

    :文档声明 定义和用法 定义:是指示浏览器使用哪个HTML版本渲染编写的代...

网友评论

      本文标题:了解DOCTYPE和浏览器渲染模式

      本文链接:https://www.haomeiwen.com/subject/iicslxtx.html