你所未必知道的關于<!DOCTYPE>標簽細節

學習從細節入手
服務器君一共花費了254.271 ms進行了7次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

<!DOCTYPE>標簽很簡單,你或許會不在意。但是你有沒有仔細了解過<!DOCTYPE>標簽?W3cschool上建議使用XHTML Transitional DTD,很多人就很聽話地把Dreamweaver的HTML文檔類型默認設置為XHTML 1.0 Transitional。之后就理所當然地一直用到現在了。人這東西還真是,越長大就越懶了,很多東西都被潛意識地當成了理所當然。

<!DOCTYPE>的定義

<!DOCTYPE>聲明位于文檔中的最前面的位置,處于<html>標簽之前。此標簽可告知瀏覽器文檔使用哪種HTML或XHTML規范。該標簽可聲明三種DTD類型,分別表示嚴格版本、過渡版本以及基于框架的HTML版本。(假如文檔中的標記不遵循doctype聲明所指定的DTD,這個文檔除了不能通過代碼校驗之外,還有可能無法在瀏覽器中正確顯示。)

<!DOCTYPE>的用法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

解析:在上面的聲明中,聲明了文檔的根元素是 html,它在公共標識符被定義為 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中進行了定義。瀏覽器將明白如何尋找匹配此公共標識符的 DTD。如果找不到,瀏覽器將使用公共標識符后面的 URL 作為尋找 DTD 的位置。

  • - : 表示組織名稱未注冊。Internet 工程任務組(IETF)和萬維網協會(W3C)并非注冊的 ISO 組織。
  • + : 為默認,表示組織名稱已注冊。
  • DTD : 指定公開文本類,即所引用的對象類型。 默認為DTD。
  • HTML : 指定公開文本描述,即對所引用的公開文本的唯一描述性名稱。后面可附帶版本號。默認為HTML。
  • URL : 指定所引用對象的位置。
  • Strict : 排除所有 W3C 專家希望逐步淘汰的代表性屬性和元素。

三種HTML文檔類型

HTML 4.01 規定了三種文檔類型:Strict、Transitional 以及 Frameset。

  • 如果需要干凈的標記,免于表現層的混亂,用HTML Strict DTD類型:
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd">
    
  • Transitional DTD 可包含 W3C 所期望移入樣式表的呈現屬性和元素. 如果用戶使用了不支持層疊樣式表(CSS)的瀏覽器以至于你不得不使用 HTML 的呈現特性時,用 Transitional DTD 類型:
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
    
  • Frameset DTD 被用于帶有框架的文檔。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " http://www.w3.org/TR/html4/frameset.dtd">
    

三種 XML 文檔類型

XHTML 1.0 規定了三種 XML 文檔類型:Strict、Transitional 以及 Frameset。

  • 如果需要干凈的標記,免于表現層的混亂,用XHTML Strict DTD類型:
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
  • Transitional DTD 可包含 W3C 所期望移入樣式表的呈現屬性和元素. 如果用戶使用了不支持層疊樣式表(CSS)的瀏覽器以至于你不得不使用 HTML 的呈現特性時,用 Transitional DTD 類型:
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
  • Frameset DTD 被用于帶有框架的文檔。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    

選擇正確的doctype

為了獲得正確的doctype聲明,關鍵就是讓dtd與文檔所遵循的標準對應。例如,假定文檔遵循的是xhtml 1.0 strict標準,文檔的doctype聲明就應該引用相應的dtd。

另一方面,如果doctype聲明指定的是xhtml dtd,但文檔包含的是舊式風格的html標記,就是不恰當的;類似地,如果doctype聲明指定的是html dtd,但文檔包含的是xhtml 1.0 strict標記,同樣是不恰當的。

如果沒有指定有效的doctype聲明,大多數瀏覽器都會使用一個內建的默認dtd。在這種情況下, 瀏覽器會用內建的dtd來試著顯示你所指定的標記(不過這是頁面寫得太糟糕的時候的做法)。

看了一下京東、淘寶、還有博客園,用的都是這個(本人也一直都是用的這個):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

但是發現百度跟谷歌用的是“<!doctype html>”,就再仔細查了一下資料,發現HTML5也是直接用的這個,不過是因為 HTML 5 不基于 SGML,因此不需要對 DTD 進行引用,但是需要 doctype 來規范瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。

建議在以后都直接用“<!doctype html>”,用<!doctype html>的話就會開啟瀏覽器的標準兼容模式,在標準兼容模式下,不能保證與其它版本(IE6之前的,直接忽略吧),的 Internet Explorer 保持兼容,文檔的渲染行為也許與將來的 Internet Explorer 不同,但也請大家放心地使用吧~~

PS:XHTML 1就是HTML 4.01的XML化,是一種不向前兼容的格式。HTML 4.01 中的 doctype 需要對 DTD 進行引用,因為 HTML 4.01 基于 SGML。SGML規定了在文檔中嵌入描述標記的標準格式,指定了描述文檔結構的標準方法,目前在WEB上使用的HTML格式便是使用固定標簽集的一種 SGML文檔。

本文地址:http://www.zqhthc.tw/librarys/veda/detail/120,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.zqhthc.tw/librarys/veda/detail/120

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《計算機程序的構造和解釋(原書第2版)》 艾伯森 (譯者), 裘宗燕 (譯者), 等 (譯者)

《計算機程序的構造和解釋》(原書第2版)1984年出版,成型于美國麻省理工學院(MIT)多年使用的一本教材,1996年修訂為第2版。在過去的二十多年里,《計算機程序的構造和解釋》(原書第2版)對于計算機科學的教育計劃產生了深刻的影響。第2版中大部分重要程序設計系統都重新修改并做過測試,包括各種解釋器和編譯器。作者根據其后十余年的教學實踐,還對其他許多細節做了相應的修改。《計算機程序的構造和解釋》(原書第2版)自出版以來,世界各地已有100多所院校采用《計算機程序的構造和解釋》(原書第2版)做教材,其中包括美國斯坦福大學、美國普林斯頓大學、英國牛津大學、日本東京大學等。

更多計算機寶庫...

英超直播吻球网