前面的話 HTML文檔通常以類型聲明開始,該聲明將幫助瀏覽器確定其嘗試解析和顯示的HTML文檔類型。本文將詳細介紹文檔聲明DOCTYPE 特點 文檔聲明必須是HTML文檔的第一行、且頂格顯示,對大小寫不敏感。因為任何放在DOCTYPE前面 ...
前面的話
HTML文檔通常以類型聲明開始,該聲明將幫助瀏覽器確定其嘗試解析和顯示的HTML文檔類型。本文將詳細介紹文檔聲明DOCTYPE
特點
文檔聲明必須是HTML文檔的第一行、且頂格顯示,對大小寫不敏感。因為任何放在DOCTYPE前面的東西,比如批註或XML聲明,會令IE9或更早期的瀏覽器觸發怪異模式(後面的渲染模式會介紹)
由於文檔類型聲明不是標簽,因此不應具有關閉標簽
版本
版本 | 年份 |
---|---|
HTML | 1991 |
HTML+ | 1993 |
HTML 2.0 | 1995 |
HTML 3.2 | 1996 |
HTML 4.01 | 1999 |
XHTML 1.0 | 2000 |
HTML5 | 2014 |
聲明
HTML5
<!DOCTYPE html>
在HTML5之前,文檔聲明一般有三種類型:嚴格型strict、過渡型transitional、框架frameset
HTML4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML1.1 等同於XHTML1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
【DTD】
DTD稱為文檔類型定義,它可以定義合法的XML文檔構建模塊,它使用一系列合法的元素來定義文檔的結構。在HTML中,DTD使用XML定義了HTML標簽規範
由於HTML5不基於SGML,所以不需要引用DTD。但是需要doctype來啟用標準模式(後面的渲染模式會介紹)
HTML、XML和SGML這三者的關係並不容易區分。HTML是SGML的一個實例,它的DTD作為標準被固定下來,因此,HTML不能作為定義其它置標語言的元語言。XML是SGML的一個子集,嚴格地講,XML也還是SGML。與HTML不同的是,XML有DTD,因而也可以像SGML那樣作為元語言,來定義其它文件系統或置標語言。如果把置標語言分為元置標語言和實例置標語言的話,SGML和XML都是元置標語言,而HTML和由XML派生的XHTML都是實例置標語言
[註意]關於DTD的更多信息移步至此
渲染模式
在很久以前的網路上,頁面通常有兩種版本:為網景(Netscape)的Navigator準備的版本以及為微軟(Microsoft)的Internet Explorer準備的版本。當W3C創立網路標準後,為了不破壞當時既有的網站,瀏覽器不能直接起用這些標準。因此,瀏覽器採用了兩種模式,用以把能符合新規範的網站和老舊網站區分開。
瀏覽器排版引擎有三種模式:怪異模式(Quirks mode)、接近標準模式(Almost standards mode)以及標準模式(Standards mode)。在怪異模式下,排版會模擬Navigator4與Internet Explorer 5的非標準行為。為了支持在網路標準被廣泛採用前,就已經建好的網站,這麼做是必要的。在標準模式下,行為即由HTML與CSS的規範描述的行為。在接近標準模式下,只有少數的怪異行為被實現
對HTML文檔來說,瀏覽器使用文檔開頭的DOCTYPE來決定用怪異模式處理或標準模式處理。如果文檔中沒有DOCTYPE將觸發文檔的怪異模式。怪異模式最明顯的影響是會觸發怪異盒模型。在CSS中盒模型被分為兩種,第一種是W3C的標準模型,第二種是怪異盒模型。不同之處在於怪異盒模型的寬高定義的是可見元素框的尺寸,而不是元素框的內容區尺寸