<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签以前。此标签可告知浏览器文档使用哪一种 HTML 或 XHTML 规范。php
Document Type 文档类型,缩写成DOCTYPE,在html中它就是个标签:<!DOCTYPE>,它有本身的声明格式,不是在html标签前加上它就完事了的,查看qq.com页面源码可见以下声明:css
1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
DOCTYPE 包含 6 部分:html
看上去蛮复杂的,不用去纠结,通常只有三种(Strict Transitional Frameset)声明(以XHTML为例)前端
上面也提到,Doctype告诉浏览器使用什么样的html或xhtml规范来解析html文档,上文说到的DOCTYPE组成中的第5部分所引入的dtd文件则包含了标记、attributes 、properties、约束规则。除此外,Doctype还会对浏览器的渲染模式产生影响,不一样的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScript 脚本的解析,因此Doctype是很是关键的,尤为是在 IE 系列浏览器中,由DOCTYPE 所决定的 HTML 页面的渲染模式相当重要。面试
两种渲染模式:浏览器
若是不声明doctype?app
这个问题的最直接答案是:不写doctype,浏览器会进入quirks mode (混杂模式)dom
Q:如何判断浏览使用哪一种方式解析css网站
A:这实际上是上面问题的复习和延伸。直接给出答案:ui
一、没有doctype声明的采用quirks mode解析
二、对于有doctype的大多数采用standard mord(这里为何用大多数,请读者思考,请参考http://hsivonen.iki.fi/doctype/)
三、特殊状况:
a、对于那些浏览器不能识别的doctype ,浏览器采用quirks mode
b、没有声明DTD或者html版本声明低于4.0采用quirks mode其余使用standard mode
c、你能看到的如今的大多数网页采用的是standard mode
d、ie6中,若是在doctype声明前有一个xml声明(好比:<?xml version="1.0" encoding="iso-8859-1"?>),则采用quirks mode解析。(这点估计连面试官都没
js如何判断浏览器正在以何种方式解析?
function getMode{ var _cm = docoment.compatMode; if(_cm == 'CSS1Compat'){ return "strict" } if(_cm == 'BackCompat' ){ return 'quirks' } }
引用