DOCTYPE探索【已翻譯100%】(1/2)
介紹
最近在我學習HTML5的時候,心裡想到的第一個問題就是瀏覽器怎麼會知道,我們編寫的HTML是否相容HTML v4.1或者HTML v5呢.
為了找到對相同查詢的回覆,我開始了我的探索,這裡我想分享對此的一些瞭解. 研究這個東西的時候,我瞭解到所有這些都是由一個叫做 的標籤來控制的,它是大多數網頁的最開頭的一個標籤,真正令我感覺驚奇的事情,則是因為我看到每一個web頁面不管何時被某個IDE新增,都會自動新增上這個標籤,而我也從未關心過這個標籤,也從未想過要去研究研究它,但這一次出於對這個標籤的好奇,我對此稍微更深入了一點.
本文中我將描述有關標籤的東西,並將給出下面一些問題的答案.
瀏覽器時如何知道,我們編寫的頁面是HTML4.1 還是 HTML5的呢?
什麼是 標籤,它是幹什麼的?
HTML4.1 & HTML5 有多少種型別的DOCTYPE?
在不同的瀏覽器上面, 是如何影響到HTML元素的渲染的?
錯誤的“”會怎樣使得一個HTML頁面不可用?
如何驗證一個頁面是是否是驗證通過的呢?
我們如何決定型別的定義呢?
如何同文件模式關聯起來的(標準, 怪異 和大體標準模式) ,還有瀏覽器是如何決定是在標準模式,還是怪異模式下渲染一個網頁的呢?
讓我們開始研究
那麼讓我們一個一個的來解答.
瀏覽器是如何知道我們寫的頁面是HTML4.1 還是 HTML5 的?
如我前面所說,使用某種IDE新增一個頁面的時候,一個叫做的標籤會自動被新增到web頁面的頂部,標籤裡面會定義好一些屬性. 這個 標籤呈述和通知瀏覽器頁面使用的HTML版本. 瀏覽器遇到一個包含此標籤的web頁面時,都會使用此文件型別的值來決定用於此頁面的文件模式. 由於HTML 5只有一個我們將會在後面討論的, 因此該 就被定義成像這樣. 該標籤自身顯示了web頁面是相容HTML 5的. 因此 被定義成時,就意味著我們使用了HTML5.
什麼是“DOCTYPE” 標籤,它能幹什麼?
“文件型別宣告” 或者說 標籤向瀏覽器指出了我們編寫的HTML,web頁面所使用的笨笨,還有其他標籤將會在瀏覽器上被如何渲染.
告訴瀏覽器, “我使用的是 HTML 4.01.” 當瀏覽器看到這個的時候,就知道你講的是什麼,以及你確實是在編寫 HTML 4.01. 那樣瀏覽器就會使用面向 HTML 4.01的佈局和顯示規則. 該標籤告知瀏覽器,所寫的是一個標準的為所有瀏覽器所接受的HTML。這一標準可以這3種之一 例如我們將在下面進一步討論的嚴格、 過度和框架集標準.
當“DOCTYPE” 被定義在一個頁面中時,瀏覽器就能準確知道如何處理你的頁面(至少是你關心的那些瀏覽器)如何按照預期的顯示. 它會告訴瀏覽器文件的型別.
“DOCTYPE” 宣告表示使用了標準的HTML,而所寫的HTML頁面是相容由W3C(全球資訊網聯盟)所定義標準的.
在HTML 4.01中, 申請引用了一個 DTD (文件型別定義) . DTD 指定了標記語言的規則,因此瀏覽器能準確的渲染出內容來.
DTD的目的是定義好一個XML文件的合法構造塊.DTD用一個合法元素和屬性的列表定義了文件架構. DTD 可以在一個XML文件裡面內聯定義, 或者是作為一個外部檔案被引用.
標籤必須是HTML文件的第一個標籤,它看起來像這樣
-//W3C//DTD HTML 4.01 Transitional//EN”“http://www.w3.org/TR/html4/loose.dtd”>
下面的圖片剖析了DOCTYPE標籤的每一個部分。請仔細閱讀,以獲得對此的一個合理的理解.
現在你可能會想到我們並沒有談及 ”過渡Transitional ”這個詞. 這個過渡是用來幹嘛的呢? 如果我們寫的是 “標準 standard” HTML 4.01, 那為什麼它要是過渡的呢? 讓我們來理解這樣作的意義.
實際上,存在兩個DOCTYPE, 一個是面向使用 HTML 4.01 編寫的HTML頁面的過渡的, 還有一個面向那些已經存在的更嚴格的 DOCTYPE.
設想你已經有一個擁有數以百計的web頁面的web站點. 你也許會想升級網站使全部的HTML升級到 4.01標準, 但是你的頁面中使用了許多HTML 2.0和3.2那個時代的舊東西. 你該怎麼辦? 那就得使用 HTML 4.01 過渡的 DOCTYPE了, 它允許你驗證你的頁面,但是仍然允許一些傳統的HTML存在 . 那樣,你就能確保你的標記裡面不會有明顯的錯誤(比如錯別字,標籤不配對等等),而你就不用將整個HTML推導重來,以通過驗證. 然後,在你移除了全部的傳統HTML之後,你就已經對嚴格文件型別有了完全的準備,就能確保你能有一個完全相容的標準的Web站點.
DOCTYPE HTML4.1, XHTML & HTML5 有多少種型別?
HTML 4.01 & XHTML 有三類不同的 宣告,而HTML5則僅僅只有一種 宣告.
HTML 4.01 Strict
在這個DTD中, 除了展示性的以及過時的HTML 元素和屬性(比如font)之外,其它都允許. Frameset 也不被允許.
HTML 4.01 Transitional
在這個DTD中, 所有的HTML元素和屬性,包括展示性的和過時的元素(比如font)都允許. 但是Frameset仍然不被允許.
**
HTML 4.01 Frameset**
在這個DTD中, 所有的HTML元素和屬性,包括展示性的和過時的元素(比如font),還有frameset內容,都允許.
XHTML 1.0 Strict
在這個 DTD 中, 標籤必須使用格式良好的XML編寫。除了展示性的和過時的,所有的HTML元素和屬性都允許使用。Frameset不被允許.
此 DTD 相當於 HTML4.01 Strict DTD,但是標記必須也是使用格式良好的 XML 編寫.
XHTML 1.0 Transitional
在這個 DTD 中, 標籤必須使用格式良好的XML編寫. 包括展示性和過時在內的,所有的HTML元素和屬性都允許使用。Frameset不被允許.
此 DTD 相當於 HTML4.01 Transitional DTD ,但是標記必須也是使用格式良好的 XML 編寫.
XHTML 1.0 Frameset
此 DTD 相當於 XHTML 1.0 Transitional, 但允許frameset內容的使用.
XHTML 1.1
該 DTD 相當於 XHTML 1.0 Strict, 但允許你新增模組 (例如提供對於東亞語言的ruby支援).
HTML 5
不同的瀏覽器上,”” 是如何影響到HTML元素的渲染的?
不同瀏覽器對各種標籤的渲染都有所不同. 我們定義一個 DOCTYPE 的時候,就意味著我們在告訴瀏覽器使用了特定DOCTYPE的HTML標準.
當我回想一下不久的過去,我不解於應用程式的一些頁面會在“怪異”的瀏覽器模式下開啟,而還有一些會在“標準”瀏覽器模式下開啟而感到沮喪,真感覺好笑. 研究了”DOCTYPE”, 我才知道只有正確的 “DOCTYPE” 才能讓web頁面在正確的瀏覽器模式下開啟.
相關文章
- 蝴蝶書-task2: 文字推理、摘要、糾錯 transformers實現翻譯 OpenAI翻譯 PyDeepLX翻譯 DeepLpro翻譯ORMOpenAI
- docker官方文件翻譯1Docker
- PHP最常用函式TOP100(翻譯)PHP函式
- docker官方文件翻譯2Docker
- rabbitmq 官方文件翻譯-2MQ
- Quartz.NET 2.x 文件翻譯 - Lesson 1:使用Quartzquartz
- Filecoin Spec 翻譯 —— 【1】概述(下)
- Electron教程翻譯2:安裝
- 學php之翻譯wordpress(2)PHP
- [Flutter翻譯]探索Dart的新構建系統FlutterDart
- HTML <!DOCTYPE>HTML
- Java:將100以內的數字翻譯成英文Java
- 翻譯:man getopt(1)中文手冊
- 掘金開源庫翻譯招募譯者啦(活動已結束)
- 翻譯 | Learning React Without Using React Part 1React
- 【翻譯】.NET 5 RC1釋出
- 翻譯 | Learning React Without Using React Part 2React
- 2006考研閱讀Text2翻譯
- <<Modern CMake>> 翻譯 2. CMake 基礎
- 【譯】[SwiftUI 100 天] Cupcake Corner - part2SwiftUIPCA
- 翻譯
- !DOCTYPE —— HTML文件模式HTML模式
- 1.某道翻譯js逆向sign值JS
- 使用Urllib2製作有道翻譯器
- [翻譯]Building WhatsApp Ui with Flutter Part 2 : The Chat ListUIAPPFlutter
- [翻譯]http2-for-a-faster-web——快速瞭解http2HTTPASTWeb
- 影象處理入門 100 題,有人把它翻譯成了中文版!
- Ubuntu安裝劃詞翻譯軟體Goldendict 單詞翻譯 句子翻譯UbuntuGo
- 如何完成中文翻譯日文線上翻譯
- 【風農翻譯】開始畫畫素畫 #1
- MIT 6.824(Spring 2020) Lab1: MapReduce 文件翻譯MITSpring
- DOCTYPE(文件型別)作用型別
- 【風農翻譯】開始畫畫素畫 #2
- [翻譯]Spring Boot 特徵參考2——外部配置:下Spring Boot特徵
- 掘金翻譯計劃月報 — 2018 年 2 月
- Quartz.NET 2.x 文件翻譯 - Lesson 2:Jobs 和 Triggersquartz
- Laravel 谷歌翻譯 /Bing 翻譯擴充套件包Laravel谷歌套件
- OpenCV翻譯專案總結二——Mat翻譯OpenCV
- 騰訊互動翻譯的坑爹翻譯