<!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' } }
引用