DOCTYPE的作用,取值與區別

2021-08-20 07:27:40 字數 2767 閱讀 7606

在學習html時沒有特別關注寫在頭部的doctype,只知道那是宣告文件型別用的,昨天被阿里的面試官問到doctype有幾種型別,一下答不上來,之後通過查閱資料,決定整合一下自己所看到的關於doctype的理解。

doctype是document type(文件型別的)的簡寫。用來說明你用的是xhtml獲html是什麼版本。

doctype宣告必須放在每乙個xhtml文件最頂部,在所有**和標識之上。
要建立符合標準的網頁,doctype宣告是必不可少的關鍵組成部分,除非你的xhtml確定了乙個正確的doctype,否則你的標識和css都不會生效其中,dtd,例如xhtml-trasitional.dtd叫做文件型別定義,裡面包含了文件的規則,瀏覽器就會根據你定義的dtd來解釋你頁面的標識,並展現出來html 4.01 和 xhtml 都基於 smgl,所以需要在文件開頭宣告引用乙個 dtd。

在html 5 中,doctype 不區分大小寫;不過對於xhtml、polyglot html,doctype 這幾個字母需要大寫。

html 和 xhtml 的doctype 宣告都有 strict/transitional/frameset 三種模式。 strict 模式禁止所有 presetational or deprecatedelements(例如 font 標籤)以及 frameset標籤();transitional 模式只禁止了 frameset標籤;frameset 模式與 transitional 模式相同,並且允許 frameset 標籤。

xhtml 1.0 提供了三種dtd宣告可供選擇: 

* 過渡的(transitional):要求非常寬鬆的dtd,它允許你繼續使用html4.01的標識(但是要符合xhtml的寫法),完整**如下:

public "-//w3c//dtd xhtml 1.0 transitional//en" "">

* 嚴格的(strict):要求嚴格的dtd,你不能使用任何表現層的標識和屬性,例如

,完整**如下:

public "-//w3c//dtd xhtml 1.0 strict//en" "">

* 框架的(frameset):專門針對框架頁面設計使用的dtd,如果你的頁面中包含有框架,需要採用這種dtd,完整**如下:

public "-//w3c//dtd xhtml 1.0 frameset//en" "">

我們選擇什麼樣的doctype

理想情況當然是嚴格的dtd,但對於我們大多數剛接觸web標準的設計師來說,過渡的dtd(xhtml 1.0 transitional)是目前理想選擇。因為這種dtd還允許我們使用表現層的標識、元素和屬性,也比較容易通過w3c的**校驗。

注:上面說的"表現層的標識、屬性"是指那些純粹用來控制表現的tag,例如用於排版的**、背景顏色標識等。在xhtml中標識是用來表示結構的,而不是用來實現表現形式,我們過渡的目的是最終實現資料和表現相分離。

打個比方:人體模特換衣服。模特就好比資料,衣服則是表現形式,模特和衣服是分離的,這樣你就可以隨意換衣服。而原來html4中,資料和表現是混雜在一起的,要一次性換個表現形式非常困難

transitional):要求非常寬鬆的dtd,它允許你繼續使用html4.01的標識(但是要符合xhtml的寫法),完整**如下:

public "-//w3c//dtd xhtml 1.0 transitional//en" "">

* 嚴格的(strict):要求嚴格的dtd,你不能使用任何表現層的標識和屬性,例如

,完整**如下:

public "-//w3c//dtd xhtml 1.0 strict//en" "">

* 框架的(frameset):專門針對框架頁面設計使用的dtd,如果你的頁面中包含有框架,需要採用這種dtd,完整**如下:

public "-//w3c//dtd xhtml 1.0 frameset//en" "">

我們選擇什麼樣的doctype

理想情況當然是嚴格的dtd,但對於我們大多數剛接觸web標準的設計師來說,過渡的dtd(xhtml 1.0 transitional)是目前理想選擇。因為這種dtd還允許我們使用表現層的標識、元素和屬性,也比較容易通過w3c的**校驗。

注:上面說的"表現層的標識、屬性"是指那些純粹用來控制表現的tag,例如用於排版的**、背景顏色標識等。在xhtml中標識是用來表示結構的,而不是用來實現表現形式,我們過渡的目的是最終實現資料和表現相分離。

打個比方:人體模特換衣服。模特就好比資料,衣服則是表現形式,模特和衣服是分離的,這樣你就可以隨意換衣服。而原來html4中,資料和表現是混雜在一起的,要一次性換個表現形式非常困難

html 5標準放棄了與 sgml 的相容,所以其實不需要在文件開頭引用 dtd,保留 doctype 是為了保證與舊瀏覽器的相容。之所以選用 是因為這個宣告格式在當前所有的瀏覽器(ie、ff、opera、safar等,即使沒有實現 html 5)下都會以標準模式渲染並且長度最短。

其他情況下,不宣告 doctype 的話,瀏覽器會以 quicks mode 渲染頁面。ie 9- 的 quicks mode 是指 ie 5.5 的渲染模式,不過 ie 10+ 和其他瀏覽器的 quicks mode 則是從 almost standards mode 演化而來,whatwg 有乙個quicksmode的標準文件。

深入理解DOCTYPE的作用

現在的 編輯器越來越人性化,各種外掛程式 快捷鍵都能夠幫助我們快速生成 比如 使用vscode編輯器在html文件中輸入!再按tab鍵就能快速生成乙個完整的html結構。如圖所示 今天我們要說的不是 編輯器,我們將目光移到文件的頂部,會發現頂部有乙個宣告,很多人不知道這個這個宣告有何作用,甚至還想把...

DOCTYPE的作用 文件型別與瀏覽器模式

dtd document type definition,文件型別定義 是一系列的語法規則,用來定義xml或 x html的檔案型別。瀏覽器會使用它來判斷文件型別,決定使用何種協議來解析,以及切換瀏覽器模式。事實上dtd可以定義所有sgml語族的文件型別,但由於太過繁瑣,xml schema反而更加...

doctype(文件型別)的作用是什麼?

doctype是docunment type 文件定義 的簡寫,用來說明web設計中所用的html或xhtml的型別,指出瀏覽器或者其他閱讀程式按照什麼樣的規則 w3c所發布的乙個文件型別定義即dtd 集去解釋文件中的標記.由於歷史的原因,瀏覽器對頁面的渲染方式是不一樣的。在w3c標準出來之前,瀏覽...