成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTML 5標準學習入門之DOCTYPE

開發 前端 后端
所謂DOCTYPE,最初是XML的概念,即通過一種特定的語法,作為一種元數據,來描述XML文檔中允許出現的元素,以及各元素的組成、嵌套規則等。具體的概念可以在WIKI中中得到一個更詳細的結果。

上一篇文章主要講述了HTML文檔的構成,同時膚淺地接觸了“標簽省略”這一概念,本文會從概念上介紹HTML文檔中第一個出現的重要元素 - DOCTYPE。

51CTO推薦專題:HTML 5 下一代Web開發標準詳解

所謂DOCTYPE,最初是XML的概念,即通過一種特定的語法,作為一種元數據,來描述XML文檔中允許出現的元素,以及各元素的組成、嵌套規則等。具體的概念可以在WIKI中中得到一個更詳細的結果。

但是在HTML中,DOCTYPE又有著一些不同的效果,其中之一就是著名的觸發瀏覽器標準模式的功能。即如果沒有DOCTYPE,瀏覽器會進入一種被稱為Quirks模式的怪異狀態,在該模式下,瀏覽器的盒模型、樣式解析、布局等都與標準規定的存在差異。

需要注意的是,所謂的HTML標準、DOM標準等,只規定了在標準模式下的概念和行為,正如文檔構成中提到的,DOCTYPE是一個HTML文檔絕對不可以省略的部分,因此就根本不存在“Quirks模式”這樣的概念。也正是因為標準中沒有對Quirks模式做出任何的規定,因此不同瀏覽器在Quirks模式下的處理也是不同的,應用Quirks模式可謂難上加難。

HTML4的DOCTYPE

在HTML4的標準中,DOCTYPE被歸屬于“HTML版本信息”一章中。在該章節中,標準指定了3種DOCTYPE:

•嚴格模式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">。

•過渡模式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">。

 •框架模式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">。

在HTML4的標準中,每一個DOCTYPE對應的dtd文件都是有合法的URL指定的,可以通過互聯網進行下載。瀏覽器可以根據URL獲得到dtd的具體內容,并根據內容的規定來解析文檔。

現實是不同的

HTML4如同XML一樣,是一個相當理想化的標準。但是,現實往往并沒有這么理想,試想下面的HTML文檔:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"   
  2. "http://www.w3.org/TR/html4/frameset.dtd"> 
  3. <html> 
  4. <head> 
  5. <title>I'm not a frameset</title> 
  6. </head> 
  7. <body> 
  8. <p>So what?</p> 
  9. </body> 
  10. </html> 

這個文檔采用了一個框架模式的DOCTYPE,但其正文確沒有使用任何<frame>元素,相對應地使用了應該由嚴格模式或者過渡模式指定的,標準的HTML結構。那么在這種情況下,瀏覽器能做什么呢?

拒絕渲染該頁面?不,瀏覽器不敢這么做,在激烈的市場競爭之中,如果因此而導致部分頁面無法渲染的話,就只能眼睜睜看著市場份額注入別家田了。所以瀏覽器頂多弱弱地報一個警告以示抗議,卻依舊得乖乖地解析出這個文檔并正確渲染。

這就是所謂的瀏覽器的“容錯性”,事實上無論你的DOCTYPE是什么,瀏覽器都會以最大的兼容能力去解析一個文檔,并以最大的努力讓這個文檔顯示得符合開發者的預期。而瀏覽器的這一特性,也逐漸讓標準制定者開始意識到,DOCTYPE似乎真的不怎么重要。因此,在HTML5中,DOCTYPE發生了一次重大的變化……

HTML 5的DOCTYPE

到了HTML 5了,這一變化相信多數人已經知道,就是HTML 5將DOCTYPE的聲明簡化了,只需要<!DOCTYPE html>即可。

正好前文所述,在HTML 4時代,標準制定者已經認識到,DOCTYPE對瀏覽器的渲染并沒有太大的幫助,除了給無聊的w3c驗證器看以外,DOCTYPE似乎只有觸發瀏覽器兼容模式的作用。于是標準工作組采取了非常實際的態度,測試了所有課程順觸發標準模式的最簡DOCTYPE,最終得出了這一結論。

但是故事不會這么簡單,標準工作組也不是完成這么簡單的動作就撒手不管的無賴分子,事實上他們還是很盡責任地考慮到了向后兼容性、可擴展性等一系列的事情,最后將DOCTYPE一章用了大量文字來進行描述,得到一個非常詳實的結果。

HTML 5的參考手冊相關章節中,將DOCTYPE分為3類:

普通DOCTYPE - normal doctype

普通DOCTYPE就是我們所見的最簡形式,即<!DOCTYPE html>,他的真正組成是這樣的:

•一段文本,即<!DOCTYPE,大小寫不敏感。

•1個或多個空格,關于空格的定義請參照簡介中的解釋。

 •字符HTML,同樣大小寫不敏感。

•1個或多個空格。

•結束標記,即>。

不再推薦的DOCTYPE - deprecated doctype

即所謂HTML 4時代的幾個DOCTYPE,其組成如下:

•一段文本,即<!DOCTYPE,大小寫不敏感。
 

•1個或多個空格。

•字符HTML,同樣大小寫不敏感。
 

•1個或多個空格。

•字符PUBLIC,大小寫不敏感。

•繼續1個或多個空格。

•一對引號或單引號(必須前后匹配),引號中放一個Public ID。

•可選內容:

•1個或多個空格。

•一對引號或單引號(必須前后匹配),引號中放一個與前面的Public ID對應的System ID。

•1個或多個空格。

•結束標記,即>。

在標準中,Public ID和System ID是有嚴格的對應關系的,如果規定的System ID不能有Public ID,則上面的第8項可選內容也就不能存在。HTML5徹底放棄了HTML4中的過渡型和框架型的DOCTYPE,同時整合了XHTML的DOCTYPE聲明,得出以下6種組合方式:

•<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">

•<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

•<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

•<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

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

•<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

遺留工具DOCTYPE - leagacy tool compatible doctype

顧名思義,完全是為了兼容久遠時代的歷史遺產而準備的DOCTYPE,甚至都已經沒辦法考證什么樣的“工具”會搞出這種DOCTYPE來……遺留工具型的DOCTYPE的組成如下:

•一段文本,即<!DOCTYPE,大小寫不敏感。

•1個或多個空格。

 •字符HTML,同樣大小寫不敏感。

•1個或多個空格。

•字符SYSTEM,大小寫不敏感。

•繼續1個或多個空格。

•一對引號或單引號(必須前后匹配),引號中放一段文本about:legacy-compat,注意這段文本是大小寫敏感的。

•1個或多個空格。

•結束標記,即>。

比如這樣的DOCTYPE就屬于此類:<!doctype HTML system "about:legacy-compat">,基本上除了大小寫,沒有什么值得改變的。

現實的細節

對于DOCTYPE的作用,在真正的瀏覽中,僅僅起到觸發瀏覽器的標準模式的作用。雖然根據標準,一個HTML文檔中,DOCTYPE前可以有其他的元素,如一個U+FFEF的BOM,幾個注釋,一點空格,但是在當前的狀態下,并沒有這么理想:

•對于IE6-9,如果DOCTYPE前存在注釋,會進入Quirks模式。

 •對于IE6,如果DOCTYPE前存在一個XML聲明,會進入Quirks模式。

寫完才發現,問題又全出在IE下……關于DOCTYPE的問題糾結至此。

原文鏈接:http://www.cnblogs.com/GrayZhang/archive/2011/03/31/learning-html5-doctype.html

【編輯推薦】

  1. HTML 5標準學習入門之文檔結構
  2. 學習HTML 5十佳站點推薦
  3. HTML 5標簽、屬性、事件及兼容性速查表
  4. 10個超棒的HTML 5素描及繪畫設計工具
  5. 技術大牛談HTML 5設計原理
責任編輯:陳貽新 來源: Gray Zhang的博客
相關推薦

2011-03-29 09:42:43

HTML 5

2009-07-14 08:51:59

HTML 5視頻標準

2013-01-30 15:35:47

AdobeHTML5

2012-05-22 08:52:09

HTML5

2011-07-14 09:16:10

HTML 5

2013-06-24 13:38:34

HTML5 DataList

2009-10-12 08:52:31

HTML5標準

2014-10-31 14:32:20

CSSW3CISO

2012-01-16 15:36:37

ChromeHTML5

2009-07-07 14:33:44

JSP入門

2011-11-09 10:05:26

HTML 5

2012-05-02 10:28:16

HTML5

2012-05-23 13:00:37

HTML5

2012-06-19 14:20:39

HTML5

2010-04-16 10:01:43

2013-05-14 10:24:39

HTML 5英特爾標準

2011-05-13 17:36:05

HTML

2012-11-30 10:42:00

IBMdW

2018-03-15 11:50:53

機器學習入門Tensorflow

2011-08-09 09:06:43

HTML 5
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合久久天天综合网 | 全免一级毛片 | 久久99精品久久久久久狂牛 | 99久久婷婷国产综合精品电影 | 美女啪啪国产 | 国产精品久久久久久影视 | 欧美成人精品一区二区三区 | 中文字幕欧美在线观看 | 男人天堂手机在线视频 | japanhdxxxx裸体 | 中文字幕日韩欧美一区二区三区 | 亚洲小视频在线观看 | www.4hu影院 | 高清国产一区二区 | 国产精品亚洲一区二区三区在线 | 中文av在线播放 | 国产精品久久久久久久久久三级 | 欧美一区二区成人 | 日本精品久久 | 精品国产18久久久久久二百 | 女女百合av大片一区二区三区九县 | 女人牲交视频一级毛片 | 国产精品免费一区二区三区 | 99热视| 99pao成人国产永久免费视频 | 精品视频久久久久久 | 久久精品一区二区 | 九九色九九 | 国产99久久精品 | 久久免费精品 | 韩国毛片一区二区三区 | 天天射网站| 一区二区三区视频在线 | 欧美福利网站 | 久久成人免费观看 | 夜夜av| 在线观看中文字幕 | 国产精品国产精品国产专区不蜜 | 中文字幕第5页 | 91av在线免费| 久久久精品天堂 |