內容摘要:html
在開始學習前端以前,你總會須要建立一個 HTML。在 HTML 標籤以前,還有一個你可能不會注意到的<!DOCTYPE>
標記。雖然它不顯眼,但咱們須要知道它爲何存在。前端
HTML 文件中,<!DOCTYPE>
是必須的,須要放到整個文檔的頂部,格式爲<!DOCTYPE html>
。它存在的意義在於阻止瀏覽器在渲染文檔時進入混雜模式(Quirks Mode)。也就是說<!DOCTYPE html>
這一文檔類型能夠確保瀏覽器儘量地使用遵循規範的模式來渲染,而不是使用某些不符合規範的渲染模式。web
好久好久之前,web 頁面主要運行在兩類瀏覽器:網景的 Navigator 和微軟的 IE。後來 W3C 制定了 web 規範以後,爲了保證現有頁面可用,各大瀏覽器不能立馬使用新規範。瀏覽器
因而,瀏覽器廠商們引入了兩種模式來區別對待符合新標準的站點和舊的遺留站點:混雜模式(Quirks Mode)和標準模式(Standards Mode)。在過渡階段還存在一種接近標準模式(Almost Standards Mode)。app
請確保把 DOCTYPE 放在 HTML 文件的頂部。若是有任何其餘字符位於 DOCTYPE 以前,好比註釋或 XML 聲明,會致使 Internet Explorer 9 或更早期的瀏覽器觸發混雜模式。編輯器
F12
,而後查看
文檔模式
。
document.doctype
能夠返回聲明的文檔類型。
舉個 Firefox 的例子:ui
文檔類型有不少,多到歪馬不想一一列舉,具體參見下圖:spa
圖中列舉了不一樣瀏覽器對於不一樣類型的文檔類型選擇什麼模式來渲染。其中包含了 HTML 發展過程當中不一樣版本所使用的文檔類型。文檔類型不少,好在咱們不須要記住。HTML5 以後,咱們只須要指定<!DOCTYPE html>
便可讓瀏覽器儘量地按照標準來渲染。3d
此外,若是你的網頁使用 XHTML[1] 並在
Content-Type
HTTP 標頭使用application/xhtml+xml
MIME 類型,你不須要使用 DOCTYPE 啓動標準模式,由於這種文件會永遠使用標準模式。不過因爲 IE9 才支持 XHTML,因此 IE9 以前的瀏覽器會由於不識別的格式,出現下載對話框。
咱們應該都遇到過這個問題,div 裏面若是裝着一個 img,會被無端撐高几個像素。效果以下圖所示(示例連接):
這個很奇怪。若是我說這個奇怪的現象只有標準模式纔會有,近標準模式和怪異模式下是沒問題的,你應該會以爲更奇怪。
近標準模式效果能夠參考該示例。
怪異模式效果能夠參考該示例。
具體的原因是這樣的:
近標準模式和標準模式之間的惟一區別在因而否對<img>
元素給定行高(line-height
)和基線(baseline
)。
近標準模式中,若是<img>
標籤所在行沒有其餘的行內元素,將不指定基線對齊(baseline
),<img>
標籤所以會緊貼着父元素底部。
在標準模式中,<img>
標籤會指定基線對齊baseline
。即便行框內並無任何內容,行框老是會包含相似字母"g","f"尾巴下伸出來的那一部分空間(針對下行字母)。所以這種狀況下你看到的<img>
跟父元素的底部存在幾個像素的間隙,這其實是爲」字母尾巴「預留的。
這一現象雖然怪異,但也是標準對於文本對齊的一種規範處理。
因爲標準模式指定了默認的baseline
對齊方式致使了這一問題,因此想要解決也很簡單,給<img>
標籤指定vertical-align: middle;
便可。