HTML5 是基於各類各樣的理念(在 WHATWG 規範中有詳述)進行設計的,這些設計理念體現了對可能性和可行性的新認識。html
1.4.1 兼容性和存在即合理html5
別擔憂,HTML5 並非顛覆性的革新。相反,實際上 HTML5 的一個核心理念就是保持一切新特性平滑過渡。一旦瀏覽器不支持 HTML5 的某項功能,針對功能的備選行爲就會悄悄進行。再說,互聯網上有些 HTML 文檔已經存在 20 多年了,所以,支持全部現存 HTML 文檔是很是重要的。跨域
HTML5 的研究者們還花費了大量的精力來研究通用行爲。好比,Google 分析了上百萬的頁面,從中分析出了 DIV 標籤的通用 ID 名稱,而且發現其重複量很大。例如,不少開發人員使用DIV id=」header」來標記頁眉區域。HTML5 不就是要解決實際問題嗎?那何不直接添加一個<header>標籤呢?儘管 HTML5 標準的一些特性很是具備革命性,可是 HTML5 旨在進化而非革命。畢竟沒有從頭再來的必要。(就算有必要的話,也不該該是 HTML5,起碼也要發明一個更好的!)瀏覽器
1.4.2效率和用戶優先安全
HTML5 規範是基於用戶優先準則編寫的,其宗旨是「 用戶即上帝」 ,這意味着在遇到沒法解決的衝突時,規範會把用戶放到第一位,其次是頁面做者,再次是實現者(或瀏覽器),接着是規範制定者(W3C/WHATWG),最後才考慮理論的純粹性。所以,HTML5 的絕大部分是實用的,只是有些狀況下還不夠完美。看看這個示例,下面的幾種代碼寫法在 HTML5 中都能被識別。ruby
id=」prohtml5″工具
id=prohtml5設計
ID=」prohtml5″htm
固然,確定會有人反對這種不嚴格的語法,咱們不去辯論對錯,只去關心一個底線,那就是最終用戶其實並不在意代碼怎麼寫。固然,咱們並不提倡入門者一開始寫代碼就這麼不嚴謹,畢竟歸根結底,受害者仍是最終用戶,由於一旦因爲開發人員的緣由形成頁面錯誤致使不能正常顯示,那麼被折磨的確定是最終用戶。ip
HTML5 也衍生出了 XHTML5(可經過 XML 工具生成有效的 HTML5 代碼)。HTML 和XHTML 兩種版本的代碼通過序列化應該能夠生成近乎同樣的 DOM 樹。顯然 XHTML 的驗證規則嚴格得多,剛纔示例中後兩行代碼是沒法經過驗證的。
1. 安全機制的設計
爲保證 HTML5 足夠安全,HTML5 在設計時就作了大量的工做。規範中的各個部分都有專門針對安全的章節,而且安全是被優先考慮的。HTML5 引入了一種新的基於來源的安全模型,該模型不只易用,並且對各類不一樣的 API 都通用。這個安全模型可讓咱們作一些之前作不到的事情,不須要藉助於任何所謂聰明、有創意卻不安全的 hack 就能跨域進行安全對話。在這方面,咱們確定不會懷念過去的「 好」 時光了。
2. 表現和內容分離
在清晰分離表現和內容方面,HTML5 邁出了巨大的步伐。HTML5 在全部可能的地方都努力進行了分離,也包括 CSS。實際上,HTML5 規範已經不支持老版本 HTML 的大部分表現功能了,但得益於先前提到的 HTML5 在兼容性方面的設計理念,那些功能仍然能用。表現和內容分離的概念也不是全新的,在 HTML 4 Transitional 和 XHTML 1.1 中就已經開始用了。Web 設計者把這個概念當作最佳實踐使用了好久,不過如今清晰地分開表現和內容顯得更爲重要,不然會有以下
弊端:
可訪問性差;
沒必要要的複雜度(全部樣式代碼都放在頁面中,代碼可讀性不好);
文件變大(樣式內容越多,文件越大),帶來的後果就是頁面載入變慢。
1.4.3 化繁爲簡
HTML5 要的就是簡單、避免沒必要要的複雜性。HTML5 的口號是「 簡單至上,儘量簡化」 。所以,HTML5 作了如下這些改進:
以瀏覽器原生能力替代複雜的 JavaScript 代碼;
新的簡化的 DOCTYPE;
新的簡化的字符集聲明;
簡單而強大的 HTML5 API。
隨後咱們將詳細講解這些改進。
爲了實現全部的這些簡化操做,HTML5 規範已經變得很是大,由於它須要精確再精確。實際上要比以往任何版本的 HTML 規範都要精確。爲了達到在 2022 年可以真正實現瀏覽器互通的
目標,HTML5 規範制訂了一系列定義明確的行爲;任何歧義和含糊均可能延緩這一目標的實現。另外,HTML5 規範比以往的任何版本都要詳細,爲的是避免形成誤解。HTML5 規範的目標是徹底、完全地給出定義,特別是對 Web 應用。因此也難怪,整個規範超過了 900 頁!基於多種改進過的、強大的錯誤處理方案,HTML5 具有了良好的錯誤處理機制。很是有現實意義的一點是,HTML5 提倡重大錯誤的平緩恢復,再次把最終用戶的利益放在了第一位。好比,若是頁面中有錯誤的話,在之前可能會影響整個頁面的顯示,而 HTML5 不會出現這種狀況,取而代之的是以標準方式顯示「 broken」 標記,這要歸功於 HTML5 中精肯定義的錯誤恢復機制。
1.4.4 通用訪問
這個原則能夠分紅三個概念。
可訪問性:出於對殘障用戶的考慮,HTML5 與 WAI(Web Accessibility Initiative,Web 可訪問性倡議)和 ARIA(Accessible Rich Internet Applicaions,可訪問的富 Internet 應用)作到了緊密結合,WAI-ARIA 中以屏幕閱讀器爲基礎的元素已經被添加到 HTML 中。
HTML5 的功能在全部不一樣的設備和平臺上應該都能正常運行。媒體中立:若是可能的話,支持全部語種:例如,新的<ruby>元素支持在東亞頁面排版中會用到的 Ruby 註釋。