HTML5 新特性

HTML5想必你們都很熟悉了。然而,你能準確地說出HTML5帶來了哪些新特性嗎?本文總結了HTML5帶來的幾項你必須知道的新特性。javascript

1.新的文檔類型 (New Doctype)

目前許多網頁還在使用XHTML 1.0 而且要在第一行像這樣聲明文檔類型:css

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

在HTML5中,上面那種聲明方式將失效。下面是HTML5中的聲明方式:html

<!DOCTYPE html>

2.腳本和連接無需type

(No More Types for Scripts and Links)
在HTML4或XHTML中,你須要用下面的幾行代碼來給你的網頁添加CSS和JavaScript文件。java

<link rel="stylesheet" href="style/stylesheet.css" type="text/css" />
 <script type="text/javascript" src="js/script.js"></script>

而在HTML5中,你再也不須要指定類型屬性。所以,代碼能夠簡化以下:瀏覽器

<link rel="stylesheet" href="style/stylesheet.css" />
<script src="js/script.js"></script>

3.語義Header和Footer (The Semantic Header and Footer)

在HTML4或XHTML中,你須要用下面的代碼來聲明"Header"和"Footer"。緩存

<div id="header"></div>
<div id="footer"></div>

在HTML5中,有兩個能夠替代上述聲明的元素,這可使代碼更簡潔。app

<header></header>
<footer></footer>

4.Hgroup

在HTML5中,有許多新引入的元素,hgroup就是其中之一。假設個人網站名下面緊跟着一個子標題,我能夠用<h1>和<h2>標籤來分別定義。然而,這種定義沒有說明這二者之間的關係。並且,h2標籤的使用會帶來更多問題,好比該頁面上還有其餘標題的時候。
在HTML5中,咱們能夠用hgroup元素來將它們分組,這樣就不會影響文件的大綱。dom

<header>
    <hgroup>
      <h1> Recall Fan Page </h1>
      <h2> Only for people who want the memory of a lifetime. </h2>
    </hgroup>
</header>

5.標記元素 (Mark Element)

你能夠把它當作高亮標籤。被這個標籤修飾的字符串應當和用戶當前的行動相關。好比說,當我在某博客中搜索「Open your Mind」時,我能夠利用一些JavaScript將出現的詞組用<mark>修飾一下。ide

<h3> Search Results </h3>
<p> They were interrupted, just after Quato said, <mark>"Open your Mind"</mark> </p>

6.圖形元素 (Figure Element)

在HTML4或XHTML中,下面的這些代碼被用來修飾圖片的註釋。函數

<img src="image/image" alt="About image" />
<p>Image of Mars </p>

然而,上述代碼沒有將文字和圖片內在聯繫起來。所以,HTML5引入了<figure>元素。當和<figcaption>結合起來後,咱們能夠語義化地將註釋和相應的圖片聯繫起來。

<figure>
    <img src="path/to/image" alt="About image" />
    <figcaption>
        <p>This is an image of something interesting.</p>
    </figcaption>
</figure>

7.從新定義small (Small Element redefined)

在HTML4或XHTML中,small元素已經存在。然而,卻沒有如何正確使用這一元素的完整說明。
在HTML5中,small被用來定義小字。試想下你網站底部的版權狀態,根據對此元素新的HTML5定義,small能夠正確地詮釋這些信息。

8.佔位符 (Placeholder)

在HTML4或XHTML中,你須要用JavaScript來給文本框添加佔位符。好比,你能夠提早設置好一些信息,當用戶開始輸入時,文本框中的文字就消失。

而在HTML5中,新的「placeholder」就簡化了這個問題。

9.必要屬性 (Required Attribute)

HTML5中的新屬性「required」指定了某一輸入是否必需。有兩種方法聲明這一屬性。

<input type="text" name="someInput" required>
<input type="text" name="someInput" required="required">

當文本框被指定必需時,若是空白的話表格就不能提交。下面是一個如何使用的例子。

<form method="post" action="">
    <label for="someInput"> Your Name: </label>
    <input type="text" id="someInput" name="someInput" placeholder="Douglas Quaid" required>
    <button type="submit">Go</button>
</form>

在上面那個例子中,若是輸入內容空且表格被提交,輸入框將被高亮顯示。

10.Autofocus 屬性 (Autofocus Attribute)

一樣,HTML5的解決方案消除了對JavaScript的須要。若是一個特定的輸入應該是「選擇」或聚焦,默認狀況下,咱們如今能夠利用自動聚焦屬性。

<input type="text" name="someInput" placeholder="Douglas Quaid" required autofocus>

11.Audio 支持 (Audio Support)

目前咱們須要依靠第三方插件來渲染音頻。然而在HTML5中,<audio>元素被引進來了。

<audio autoplay="autoplay" controls="controls">
     <source src="file.ogg" />
     <source src="file.mp3" />
     <a href="file.mp3">Download this file.</a>
</audio>

當使用<audio>元素時請記得包含兩種音頻格式。FireFox想要.ogg格式的文件,而Webkit瀏覽器則須要.mp3格式的。和往常同樣,IE是不支持的,且Opera 10及如下版本只支持.wav格式。

12.Video 支持 (Video Support)

HTML5中不只有<audio>元素,並且還有<video>。然而,和<audio>相似,HTML5中並無指定視頻解碼器,它留給了瀏覽器來決定。雖然Safari和Internet Explorer9能夠支持H.264格式的視頻,Firefox和Opera是堅持開源Theora 和Vorbis格式。所以,指定HTML5的視頻時,你必須提供這兩種格式。

<video controls preload>
    <source src="cohagenPhoneCall.ogv" type="video/ogg; codecs='vorbis, theora'" />
    <source src="cohagenPhoneCall.mp4" type="video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'" />
    <p> Your browser is old. <.a href="cohagenPhoneCall.mp4">.Download this video instead.</a> </p>
</video>

13.視頻預載 (Preload attribute in Videos element)

當用戶訪問頁面時這一屬性使得視頻得以預載。爲了實現這個功能,能夠在<video>元素中加上preload="preload"或者只是preload。

<video preload >

14.顯示控制條 (Display Controls)

若是你使用過上面的每個提到的技術點,你可能已經注意到,使用上面的代碼,視頻僅僅顯示的是張圖片,沒有控制條。爲了渲染出播放控制條,咱們必須在video元素內指定controls屬性。

<video preload controls>

15.正規表達式 (Regular Expressions)

在HTML4或XHTML中,你須要用一些正規表達式來驗證特定的文本。而HTML5中新的pattern屬性讓咱們可以在標籤處直接插入一個正規表達式。

<form action="" method="post">
    <label for="username">.Create a Username: </label>
    <input type="text" name="username" id="username" placeholder="4 <> 10" pattern="[A-Za-z]{4,10}" autofocus required>
    <button type="submit">.Go </button>
</form>

16.Range Input

HTML5引用的range類型能夠建立滑塊,它接受min, max, step和value屬性
可使用css的:before和:after來顯示min和max的值

<input type=」range」 name=」range」 min=」0″ max=」10″ step=」1″ value=」"> 
input[type=range]:before { content: attr(min); padding-right: 5px; 
} 
input[type=range]:after { content: attr(max); padding-left: 5px;}

新增接口

HTML5爲了幫助建立Web App,引入了一些新的接口:

  • 媒體標籤video和audio的播放流程控制、同步多個媒體標籤、字幕等接口

  • 表單限制驗證接口(如setCustomValidity)

  • 引入應用緩存機制,容許Web App離線的API

  • 容許Web App註冊爲對應協議或媒體類型的處理應用的APP的API。(即registerProtocolHandler和registerContentHandler)

  • 引入contenteditable屬性,容許編輯任意元素的接口

  • 暴露會話歷史、容許使用腳本無刷新更新頁面URL(History接口)

  • base64轉換API(atob()及btoa())

  • 處理搜索服務提供方的接口(AddSearchProvider()及IsSearchProviderInstalled())

  • External接口

  • 打印文檔的接口(print())
    (譯註:下列接口是很早就有,屬於BOM中的共識部分,直到HTML5才加入標準)

  • 暴露文檔URL、容許使用腳本切換、刷新頁面的接口(Location接口)

  • 基於時間的回調接口(setTimeout()及setInterval())

  • 提供給用戶的提示接口(alert(),confirm(),prompt())

  • Window接口

  • Navigator接口

修改的接口

以下DOM 2的接口已被改動:

  • document.title的返回值將會摺疊多個空格符

  • document.domain容許賦值,所以能夠改變文檔的script origin

  • document.open()能夠清空文檔(若是調用時僅有兩個或如下參數),或像是window.open()同樣表現(若是調用時有三個或四個參數)。在前種調用方式下,拋出一個XML異常

  • document.close()、document.write()、document.writeln()拋出一個XML異常。後二者容許可變參數,他們能夠在文檔解析階段往文檔流中加入文本,並隱式調用document.open()。在一些情形下,他們均可能會被忽略

  • document.getElementsByName()將返回知足name符合參數的全部HTML元素

  • HTMLFormElement的elements接口將返回HTMLFormControlsCollection,包括button, fieldset, input,keygen, object, output, select及textarea

  • HTMLSelectElement的add()接口容許第二個參數爲數字

  • HTMLSelectElement的remove()接口在參數越界的時候,將刪除集合中第一個元素

  • 在全部的HTML元素中均可以調用click()、focus()及blur()接口了

  • a及areastringify爲它們的href屬性
    (譯註:意味着HTMLAnchorElement和HTMLAreaElement對應的toString方法返回它們的href屬性)

Document擴展

DOM Level 2中有個HTMLDocument接口,繼承自Document接口,並提供了文檔內部的元素(僅侷限於HTML範疇內)訪問接口。
HTML5將這些成員移動到了Document接口中,並在特定方向上拓展了它。因爲各種文檔(譯註:XML、HTML五、SVG等等文檔)都使用了Document接口,而HTML5範疇內的元素在全部類別的文檔中均可用,所以這些接口在SVG等文檔中均可以很好的運做。

此外,Document接口還有一些新成員:

  • location、lastModified及readyState:用於幫助管理文檔的元數據(metadata)

  • dir、head、embeds、plugins、scripts:用於獲取DOM樹的不一樣部分

  • activeElement及hasFocus接口,用於判斷一個元素是否得到了焦點

  • 文檔編輯接口:designMode、execCommand()、queryCommandEnabled()、queryCommandIndeterm()、queryCommandState()、queryCommandSupported()、queryCommandValue()

  • 全部的IDL事件處理屬性。此外,onreadystatechange是惟一一個在Document上纔有效的接口
    在腳本中修改了HTMLDocument原型的那部分仍是能夠正常運轉的,因爲window.HTMLDocument也將返回Document接口。

HTMLElement擴展

HTMLElement接口也在HTML5中獲得了擴展:

  • 用於獲得data-*的屬性的接口dataset

  • click()、focus()、blur()接口容許腳本模擬用戶點擊與切換焦點

  • accessKeyLabel給予UA賦予該元素的快捷鍵,開發能夠經過accesskey屬性來影響UA的該行爲

  • isContentEditable返回元素是否能夠編輯

  • 所有的IDL事件處理屬性

  • 獲得元素屬性的接口如translate、hidden、tabIndex、accessKey、contentEditable、spellcheck、style
    (譯註:DOM Level 2僅建議採用Element接口上的setAttribute和getAttribute來獲取或設置HTML Attribute,HTML5的這些定義擴展了HTML Attribute的範圍,讓它們能夠像DOM Property同樣set和get——UA早已普遍支持)

  • 有些以前在HTMLElement上定義接口被移動到了Element接口中:id、className、classList、getElementsByClassName()
    (譯註:擴展了DOM Level 2上的Element接口定義,能夠直接set/get id等屬性值了——UA早已普遍支持)

其它接口擴展

DOM Level 2中的其它接口也獲得了擴展。

接口 新增接口
HTMLOptionsCollection legacy caller、setter creator、add()、remove()、selectedIndex
HTMLFormElement 經過name或index索引的getter、checkValidity()
HTMLSelectElement getter、setter creator、item()、namedItem()、labels、selectedOptions及各類validate接口函數
HTMLOptionElement 構造器new Option()
HTMLInputElement files、height、indeterminate、list、valueAsDate、valueAsNumber、width、stepUp()、stepDown()、labels、文本選取區域API及各類validate接口函數
HTMLTextAreaElement textLength、labels、文本選取區域API及各類validate接口函數
HTMLButtonElement labels及各類validate接口函數
HTMLLabelElement control
HTMLFieldSetElement type、elements及各類validate接口函數
HTMLAnchorElement relList、text
HTMLLinkElement relList
HTMLAreaElement relList
HTMLImageElement 構造器new Image()、naturalWidth、naturalHeight、complete
HTMLObjectElement contentWindow、legacy caller及各類validate接口函數
HTMLMapElement images
HTMLTableElement createTBody()
HTMLIFrameElement contentWindow

此外:

  • HTMLLinkElement和HTMLStyleElement實現了CSSOM中的LinkStyle接口

  • HTMLAnchorElement、HTMLLinkElement和HTMLAreaElement實現了URLUtils接口

廢棄接口

  • 在HTML5中已被廢棄的屬性,其對應IDL屬性接口也將被廢棄。如bgColor已被廢棄,那麼HTMLBodyElement之上的IDL屬性接口bgcolor也被廢棄

  • 在HTML5中已被廢棄的元素,其對應接口也被廢棄,包括HTMLAppletElement, HTMLFrameSetElement,HTMLFrameElement, HTMLDirectoryElement及HTMLFontElement、HTMLBaseFontElement

  • 因爲HTML解析器將isindex替代爲其餘元素了,HTMLIsIndexElement接口被廢棄

  • 一些成員屬性從HTMLDocument接口移動到了Document接口,所以在原來的HTMLDocument下被廢棄:anchors和applets。

相關文章
相關標籤/搜索