Doctype:(Document Type)文檔類型,它位於文檔中最前面的位置,處於標籤以前。若是你想製做符合標準的頁面,一個必不可少的關鍵組成部分就是DOCTYPE的聲明。肯定了正確的Doctype,xhtml裏面的標識和css才能正常生效(也就是說它會很負責地告訴瀏覽器怎麼解釋你的這個標籤和你寫的css)。既然它是一種聲明,它的責任就是告訴瀏覽器文檔使用哪一種html或者xhtml規範。爲了獲取正確的Doctype聲明,關鍵就是讓dtd與文檔所遵循的標準對應。例如:假定文檔遵循的是xhtml 1.0 strict,那麼文檔的Doctype聲明就應該是相應的dtd,若是Doctype聲明指定的是xhtml dtd,但文檔包含的依舊是html標記就是不恰當的。相似的,若是文檔包含的是xhtml 1.0 strict標記,可是Doctype聲明指定是html dtd也是不恰當的。
1、選擇什麼樣的DOCTYPE?
xhtml 1.0中有3種dtd聲明能夠選擇,過渡性的(Transitional)、嚴格的(Strict)、框架的(Frameset)。下面咱們來分別介紹:
一、過渡的:一種要求不很嚴格的,容許在html中使用html 4.01的標識(符合xhtml語法標準),過渡的dtd寫法以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
二、嚴格的:一種要求嚴格的dtd,不容許使用任何表現層的標識和屬性,嚴格的dtd寫法以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
三、框架的:一種專門針對框架頁面所使用的dtd,當頁面中含有框架元素時,就要採用這種dtd,寫法以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
PS:使用嚴格的dtd來製做頁面固然是最理想的方式,可是對於尚未深刻了解web標準的網頁設計者,比較適合用過渡的dtd,由於這種dtd還容許使用表現層的標識、元素和屬性,比較適合大多數的網頁製做人員(固然量力而爲了!)
2、什麼是標準模式與混雜模式?
不一樣文檔模式主要影響CSS內容的呈現,尤爲是瀏覽器對盒模型的解析,但在某些狀況下也會影響到JavaScript的解釋執行。
一、文檔模式目前有四種:
混雜模式(quirks mode)
//讓IE的行爲與(包含非標準特性的)IE5相同
標準模式(standards mode)
//讓IE的行爲更接近標準行爲
準標準模式(almost standards mode)
//這種模式下的瀏覽器特性有不少都是符合標準的,不標準的地方主要體如今處理圖片間隙的時候(在表格中使用圖片時問題最明顯)。
超級標準模式:
//IE8引入的一種新的文檔模式,超級文檔模式可讓IE以其全部版本中最符合標準的方式來解釋網頁內容。
ps:
總的來看,混雜模式讓IE像IE5,標準模式使用IE7的呈現引擎,而超級標準模式則是IE8的默認文檔模式。
(另外一篇關於混雜模式解釋:
什麼是混雜模式呢?
混雜模式是一種比較寬鬆的向後兼容的模式。混雜模式一般模擬老式瀏覽器的行爲,以防止老站點沒法工做。
爲何會有混雜模式呢?
當年Netscape4(譯註:網景公司早期的瀏覽器)和IE4(微軟公司早期的瀏覽器)實現CSS機制時,並無遵循W3C提出的標準。Netscape4 提供了糟糕的支持,而IE4 雖然接近標準,但依舊未能徹底正確的支持標準。儘管IE 5 修復了IE4 許多的問題(bugs),可是依然延續CSS實現中的其它故障(主要是盒模型(box model)問題)。爲了保障本身的網站在各個瀏覽器上顯示正確,網頁開發者們不得不依據各個瀏覽器自身的規範來使用css,所以大部分網站的css實現並不符合W3C規範的標準。然而隨着標準一致性愈來愈重要,瀏覽器開發商不得不面臨一個艱難的抉擇:逐漸遵循W3C的標準是前進的方向。可是改變現有的 css,徹底去遵循標準,會使許多舊網站或多或少受到破壞,若是瀏覽器忽然以正確的方式解析現存的css,陳舊的網站的顯示必然會受到影響。因此,全部的瀏覽器都須要提供兩種模式:混雜模式服務與舊式規則,而嚴格模式服務於標準規則
3、怎麼觸發它們呢?
根據Doctype是否存在以及使用哪一種DTD來觸發其不一樣的模式。若是Doctype不存在或者其形式不正確那麼默認爲混雜模式。若是XHTMLl文檔中包含完整的Doctype,那麼它通常以標準模式呈現。
二、如何觸發文檔模式:
觸發混雜模式:
若是在文檔開始處沒有發現文檔類型聲明,則全部瀏覽器都會默認開啓混雜模式。但採用混雜模式不是什麼值得推薦的作法,由於不一樣瀏覽器在這種模式下的行爲差別很是大,若是不使用某些hack技術,跨瀏覽器的行爲根本就沒有一致性可言。
觸發標準模式:
<!-- HTML 4.01 嚴格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 嚴格型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
觸發準標準模式:
<!-- HTML 4.01 過渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!-- XHTML 1.0 過渡型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
IE8中關閉超級標準模式:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
//content屬性中IE的值用於指定使用哪一個版本的呈現引擎來呈現頁面。設計這個值的目的就是爲了向後兼容那些專門爲老版本的IE設計的站點和頁面。css