<!DOCTYPE>標簽的定義 <!DOCTYPE> 聲明位於文檔中最前面的位置,處於<html>標簽之前。<!DOCTYPE> 聲明不是一個HTML標簽,它是告知Web瀏覽器該頁面使用了哪種HTML版本(規範),瀏覽器用此版本(規範)對該文檔進行解析,渲染。 <!DOCTYPE> 可聲明的 DTD ...
<!DOCTYPE>標簽的定義
<!DOCTYPE> 聲明位於文檔中最前面的位置,處於<html>標簽之前。<!DOCTYPE> 聲明不是一個HTML標簽,它是告知Web瀏覽器該頁面使用了哪種HTML版本(規範),瀏覽器用此版本(規範)對該文檔進行解析,渲染。
<!DOCTYPE> 可聲明的 DTD 有三種:分別是嚴格版本(strict)、過渡版本(transitional)、以及基於框架的版本(frameset),若文檔不遵循其DTD規範,則此文檔中的代碼不但不能通過代碼校驗,並且有可能無法正常顯示。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <!--HTML5示例--> 5 <meta charset="utf-8"> 6 <title>文檔標題</title> 7 </head> 8 <body> 9 文檔內容...... 10 </body> 11 </html>
<!DOCTYPE>標簽的使用
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
在以上聲明中,此文檔的根元素被聲明為HTML,他在公共標識符被定義為 “-//W3C//DTD HTML 4.01//EN” 的DTD中進行了定義,瀏覽器會明白如何尋找與該公共標識符匹配的DTD,如果找不到,瀏覽器將會使用公共標識符後面的 URL 來尋找DTD的位置。
-/+:"-“表示組織名稱未註冊,Internet 工程任務組(IETF)和萬維網協會(W3C)並非註冊的 ISO 組織,”+"表示組織名稱已註冊;
DTD:指公開文本類,即所用的對象類型。預設為DTD;
HTML:公開文本描述,即對所引用的公開文本的唯一描述性名稱。後面可附帶版本號。預設為HTML;
URL: 指定所引用對象的位置。
HTML的文檔類型
HTML4.01 的文檔類型
HTML 4.01 規定了三種文檔類型:Strict、Transitional 以及 Frameset
嚴格版本(strict) 的DTD 包含所有 HTML 元素和屬性,但不包括表象或過時的元素(如 font )。框架集是不允許的。
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
過渡版本(transitional) 的DTD 包含所有 HTML 元素和屬性,包括表象或過時的元素(eg:font ),框架集是不允許的。
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
基於框架的版本(frameset) 的DTD 與 HTML 4.01 Transitional 相同,但是允許使用框架集內容。
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
HTML5 的文檔類型
HTML4.01 中的DOCTYPE需要對 DTD 進行引用,因為 HTML4.01 基於 SGML。而 HTML5 不基於SGML,因此不需要對 DTD 進行引用,但是需要DOCTYPE來規範瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。
1 <!DOCTYPE html>
XHTML1.0 的文檔類型
XHTML 1.0 規定了三種文檔類型:Strict、Transitional 以及 Frameset
嚴格版本(strict) 的DTD 包含所有 HTML 元素和屬性,但不包括表象或過時的元素(如 font )。框架集是不允許的。結構必須按標準格式的 XML 進行書寫。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
過渡版本(transitional) 的DTD 包含所有 HTML 元素和屬性,包括表象或過時的元素(如 font )。框架集是不允許的。結構必須按標準格式的 XML 進行書寫。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
基於框架的版本(frameset) 的DTD 與 XHTML 1.0 Transitional 相同,但是允許使用框架集內容。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1 的文檔類型
該DTD 與 XHTML 1.0 Strict 相同,但是允許您添加模塊(例如為東亞語言提供 ruby 支持)。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
三種類型文檔的區別
嚴格版本:
它將文檔結構與表現形式實現了更高的分離,所以,頁面的外觀要用CSS來控制。
過渡版本:
它包含了HTML4.01版本的全部標記,方便網頁開發者順利地從HTML的使用過渡到XHTML
基於框架的版本:
它使用<frameset>以框架的形式將網頁分為多個文檔。W3C是推薦使用XHTML的,而且使用XHTML的話可以更順利地通過W3C對網頁頁面的驗證
註意
1. 頁面引用哪種規範就要用那種規範允許或推薦使用的標簽。
2. 如果沒有指定有效的DOCTYPE聲明,大多數瀏覽器都會使用一個內建的預設dtd。在這種情況下, 瀏覽器會用內建的dtd來試著顯示你所指定的標記,這將違背HTML規範的意義,不建議使用這種方式。
3. 當doctype申明缺失或者格式不正確時,文檔會以相容模式呈現。
標準模式:排版以及js運行模式都是以瀏覽器支持的最高標準運行;
相容模式:頁面以寬鬆的向後相容(向老版本相容)方式顯示,模擬老瀏覽器的行為防止(老)站點無法正常工作。
其他
<!DOCTYPE html> 是 HTML5 中唯一的 DOCTYPE,也被視作將網頁 “升級” 到 HTML5 的第一步。很多國外網站的<!DOCTYPE>和<head>之間都會有一段註釋,如:
1 <!—[if IE 6 ]><html class="ie ielt9 ielt8 ielt7 ie6" lang="en-US"><![endif]—> 2 <!—[if IE 7 ]><html class="ie ielt9 ielt8 ie7" lang="en-US"><![endif]—> 3 <!—[if IE 8 ]><html class="ie ielt9 ie8" lang="en-US"><![endif]—> 4 <!—[if IE 9 ]><html class="ie ie9" lang="en-US"><![endif]—> 5 <!—[if (gt IE 9)|!(IE)]><!—><html lang="en-US"><!—<![endif]—>
該代碼作用於 css,來寫一些針對IE各版本的樣式差異。先判斷用戶用的哪個 IE 版本,然後在標簽上加上該版本的 class,這樣可以方便 hack。
css 文件是這樣寫的:
1 .ie6 xxx {}; 2 .ie7 xxx {};
這是目前最好的 hack 方式之一。