繼續講解HTML5的技巧:
16、視頻支持
音頻元素<audio>非常像,在新的瀏覽器上也支持HTML5視頻。事實上,就在最近YouTube宣布了一項新的HTML5視頻嵌入。可惜的是,由於HTML5說明文件並沒有為視頻指出某個特定的編碼器,所以都主要取決於瀏覽器來決定了。儘管Safari和IE9可以支持H.264 格式的視頻,Firefox 和Opera卻仍然堅持Theora 和Vorbis格式。因此,顯示HTML5視頻的時候,你必須提供兩種格式。
17、視頻預先加載
你首先需要決定是否需要瀏覽器來預先加載視頻。是否有需要?假設,一個訪客進入某個專門用來顯示視頻的頁面,那麼就非常有必要預先加載這個頁面節省一點等待的時間。你可以通過設置preload=preload來預先加載視頻,或者之間添加preload也可以。
<video preload>
…
</video >
18、顯示控件
你可能已經註意到,用上面的代碼的話,視頻將只會顯示成一個圖片,而沒有任何可控制的元件。為了獲取這些播放控件,我們必需在視頻元素裡指定這些控件屬性。
<video preload controls>
…
</video >
19、正則表達式
多虧了新模式的屬性,我們可以直接在代碼中插入一個正則表達式。
<form method=post action=>
<label for=username>create a username: </label>
<input id=username type=text name=username placeholder=4 <> 10″ required=required autofocus=autofocus pattern=[A-Za-z]{4,10}>
<button type=submit>Go </button>
</form>
如果你比較熟悉正則表達式的話就會注意到這個新模式: [A-Za-z]{4,10}只接受大小寫字母。這個字符串最少必需有四個字符,最多是十個字符。
20、檢測瀏覽器對屬性的支持
前面提到過並非所有的瀏覽器都支持這些屬性,那是否有什麼方法能夠判斷瀏覽器是否能夠識別它們呢?這個問題問得非常好,這裡給大家介紹兩種方式,第一個選擇是使用Modernizr來檢測,或者你也可以創建並剖析這些元素來看看瀏覽器都有什麼能力。例如,在前面的例子裡,如果我們要確定瀏覽器是否能夠執行pattern屬性,就可以在頁面上添加JavaScript:
alert( 'pattern ' in document.createElement('input ') ) // boolean;
實際上,這是確定瀏覽器兼容性的一種非常常用的方法。 jQuery庫利用了這個技巧。上面的代碼裡,我們創建了一個新的輸入元素,並確認pattern屬性是否能夠被識別。如果能夠識別的話,瀏覽器就支持這個功能,否則就不支持。
<script>
if (! 'pattern ' in document.createElement('input ') ) {
// do client/server side validation
}
</script>
記住,這將需要依靠JavaScript來實現!
21、Mark元素
<mark> 元素的主要功能就是在頁面中高亮顯示那些需要在視覺上向用戶突出其重要性的文字。包裹在此標籤裡的字符串必須與用戶當前的行為相關。例如,如果我在一些博客中搜索Open your Mind ,我可以使用在<mark>標籤裡使用JavaScript 來包裹每一次動作。
<h3> search results </h3>
<h6> They were interrupted, just after Quato said, <mark>Open your Mind</mark>. </h6>
22、何時使用<div>
是否還需要使用<div>標籤呢?當然需要。例如,如果你想在一個元素裡將一段代碼包裹住,特別是為了內容的定位,<div> 將會是非常理想的選擇。不過,如果不是上述情況而是要包裹博客文章、或者頁腳的鏈接列表,建議你分別使用<article>和<nav>元素。