標籤:文本 關聯 知識庫 eval 標記語言 元素 1.2 ebs min
3.視頻與音頻
3.1Video
Ogg是帶有Theora視頻編碼和Vorbis音頻編碼的檔案;
MPEG4是帶有H.264視頻編碼和AAC音頻編碼的MPEG4檔案;
WebM是VP8視頻編碼和Vorbis音頻編碼的檔案;
HTML5的規範沒有指定特定的視頻轉碼器,它留給了瀏覽器來決定。
Safari和IE9預期支援H.264格式的視頻,Firefox和Opera堅持開源的Theora和Vorbis格式,所以需要提供兩種格式。
Video支援三種視頻格式:Ogg,MPEG4,WebM。
例:
<video controls=”preload”>
//此屬性工作表示視頻在頁面載入時進行載入,預備播放。如果設定為”autoplay”,就忽略該屬性。
//controls用於顯示如播放按鈕的控制項
<source src=”cohagenPhoneCall.ogv” type=”video/ogg;codecs=’vorbis,theora’”/>
<source src=”cohagenPhoneCall.mp4”
type=”vide0/mp4; codecs=’avc1.42E01E,mp4a.40.2’”/>
<p>你的瀏覽器太舊了。<a href=”cohagenPhoneCall.mp4”>下載這個視頻。</a></p>
</video>
註:
· 技術上是不需要設定type屬性的,但是不這樣做的話,瀏覽器就會自己去尋找類型,為了節省一些頻寬,最好還是聲明下。
· 不是所有的瀏覽器都支援Html5,所以在資源元素的下面,可以提供一個下載連結或者嵌入視頻的flash版本替代,這取決於個人。
· 如果想要所有的瀏覽器都支援HTML5標籤,只要連結一個js檔案就可以。在頁面的頭部或底部寫上:
<script src=”http://html5media.googlecode.com/svn/trunk/src/html5media.min.js”>
</script>
對於HTML部分,使用:
<video src=”video.mp4” width=”320” height=”240”controls=”autobuffer”>
</video>
3.2Audio
無需再依賴第三方產檢區渲染音頻了,因為HTML5提供了<audio>元素。
以MOozilla核心的Firefox瀏覽器只支援.ogg檔案,webkit核心的瀏覽器支援.mp3擴充,safari不承認.ogg,它會跳過並移到MP3版本。所以需要建立兩個版本的音頻。
Audio支援三種音頻格式:Ogg Vorbis,MP3,Wav。
例:
<audio autoplay=”autoplay” controls=”controls”>
<source src=”file.ogg”/>
<source src=”file.mp3”/>
</audio>
//標籤的屬性與video相同。沒有height與width。
4.Web儲存 4.1localStorage
localStorage可以長期儲存資料而沒有時間限制。
4.2sessionStorage
SessionStorage不能長期儲存資料,資料會隨著瀏覽器的關閉而刪除。
5.HTML5的特徵
5.1.1新的Doctype
<!DOCTYPE html>
5.1.2圖形元素
<img src=”path/to/image” alt=”About image”>
<p>Image of Mars</p>
文字裹在p的標籤中,與img標籤各行其道,讓人很難聯想到這就是標題。HTML5通過採用figure元素進行改正。當和figcaption組合使用時,就能夠語義化的聯想到這就是圖片相對應的標題。
<figure>
<img src=”path/to/image” alt=”About image”/>
<figcaption>
<p>This is an image of somethinginteresting</p>
</figcaption>
</figure>
5.1.3<small>重新定義
<small>元素不再被用來建立靠近logo且相關的副標題。在html5中,<small>被重新定義,指小字。
5.1.4指令碼(scripts)和連結(links)無需type
<link rel=”stylesheet” href=”path/to/stylesheet.css”type=”text/css”/>
<script type=”text/JavaScript”src=”path/to/script.js”></script>
在html5中:
<link rel=”stylesheet”href=”path/to/stylesheet.css”>
<script src=”path/to/script.js”></script>
5.1.5引號問題
Html5不是XHTML,所以可以不需要引號。
<p class="myclass" id=someID>Startthe reactor
但是如果傾向結構化,還是需要把引號加上的。
5.1.6內容可以編輯
contenteditable元素顧名思義就是允許使用者可以編輯元素內容包含的任意文本。
[html] view plain copy
- <ul contenteditable=”true”>
- <li>hello</li>
- <li>Beijing</li>
- <li>trs</li>
- </ul>
5.1.7email輸入(input)
在表單輸入框應用程式名稱為”email”的type屬性可以命令瀏覽器只允許符合有效電子郵件地址結構的字串。但是較舊的瀏覽器不識別,它們會簡單的退回到普通文字框。
[html] view plain copy
- <form action=”” method=”get”>
- <label for=”email”>郵箱:</label><input id=”email”name=”email” type=”email”/>
- <button type=”submit”>確定</button>
- </form>
5.1.8預留位置(placeholders)
placeholders意為文字框/文本域空間預設會有個文字提示,獲得焦點時,此提示文字就會消失;失去焦點時如果內容為空白,提示文字又出現。在表單控制項裡面顯示的提示性文字就是預留位置。
如果是以前需要一些javascript代碼實現預留位置的操作,而html5卻使得其非常輕鬆:
<label for=”email”>郵箱:</label>
<input id=”email” type=”email” placeholder=”[email protected]”size=”26”/>
一般webkit核心的瀏覽器支援此特性,如chrome、safari。
5.1.9本機存放區(localStorage)
傳統的HTML使用的是眾所周知的cookie,各種瀏覽器都支援,直接用js就可以調用,很方便。但是傳統的cookie也有它本身的缺陷和不足。比如儲存空間小,每個網站大小限制在4kb左右,又有時間期限,而且在請求網頁的時候cookie會被附在每個HTTP請求的header中,所以無形中增加了流量。HTTP請求中cookie是明文傳遞的,所以存有安全性問題,入股用SSL(Secure Sockets Layer 安全套接層;是為網路通訊提供安全及資料完整性的一種安全性通訊協定)通道另當別論。cookie也很容易受到跨站較穩的攻擊。在一個連結後面加上”?cookie=document.cookie”就可以輕易獲得使用者的cookie資訊。HTML5的本機存放區也可能會有跨站指令碼攻擊XSS(cross site script,跨站指令碼攻擊。惡意攻擊者往Web中插入惡意html代碼,當使用者瀏覽該頁時,嵌入其中web裡面的html代碼會被執行。)的問題。
HTML5的本機存放區可以儲存5M大小的資料,甚至還多。它主要有四種:localStorage,sessionStorage,webSQL,indexDB
例子:
[html] view plain copy
- <ul id="edit" contenteditable="true">
- <li><li>
- </ul>
- <script language="javascript">
- <!--
- var edit=document.getElementById(edit);
- edit.onblur=function(){
- localStorage.setItem("tododata",this.innerHtml);
- };
- if(localStorage.getItem("tododata")){
- Edit.innerHTML = localStorage.getItem("tododata");
- }
- //-->
- </script>
5.2.0語義的Header和Footer
以往:
<div id=”header”>
…
</div>
<div id=”footer”>
…
</div>
有了HTML5,可直接替換成;
<header>
…
</header.
<footer>
…
</footer>
5.2.1IE和HTML5
所有元素有個預設的inline的display。為了確保所有新的元素都以block正確的渲染,需要這樣定義:
header,footer,article,section,nav,menu,hgroup{
display:block;
}
但是由於IE不識別某些標籤,如header,就會忽略這些樣式,所以需要建立元素:
document.creatElement(“artical”);
document.creatElement(“footer”);
document.creatElement(“header”);
document.creatElement(“nav”);
document.creatElement(“menu”);
document.creatElement(“hgroup”);
另解:
<!—[if IE]>
<script src=”http://html5shim.googlecode.com/svn/trunk/html5.js”></script>
<![endif]-->
5.2.2文檔某一部分的資訊(hgroup)
使用hgroup元素可以將標題組合在一起。
<header>
<hgroup>
<h1>recall fan page</h1>
<h2>only for people whowant the memory of a lifetime.</h2>
</hgroup>
</header>
5.2.3必要的屬性(required attribute)
<input type=”text” name=”someInput” required>
或者使用更結構化的方法:
<input type=”text” name=”someInput”required=”required”>
如果”someInput”文字框是空白,表單就不會被提交。
<form action=”” method=”get”>
<lable for=”name”>姓名:</label>
<input id=”name” name=”name” type=”text”placeholder=”trs” required=”required”/>
<button type=”submit”>提交<button>
</form>
如果input裡面內容是空白,在表單提交的時候,文字框的框會高亮顯示,但是好像只是在chrome裡有此效果。
5.2.4autocomplete屬性
autocomplete屬性規定form或者input域應該擁有自動完成的功能。
它使用於<form>標籤,以及以下類型的<input>標籤:text,search,url,telephone,email,password,datapickers,range以及color。
<form action=”” method=”get” autocomplete=”on”>
<label for=”email”>郵箱:</label>
<input type=”email” name=”email”autocomplete=”off”/>
</form>
5.2.5Regex
使用Regex能夠輕鬆的驗證一個特定的文本。
<form action=”” method=”get”>
<label for=”username”>姓名:</label>
<input id=”username ” name=”username” type=”text”placeholder=”4-10個英文字母”
Pattern=”[A-Za-z]{4,10}”required=”required” autofocus/>
<button type=”submit”>提交</button>
</form>
在[A-Za-z]{4,10}表示接受4-10位不區分大小寫英文字母。此特性好像只在chrome瀏覽器中支援。
5.2.6屬性支援檢測
利用優秀的Modernizr庫(http://www.modernizr.com/)可以檢測瀏覽器是否支援某些屬性。
只要建立和分析這些元素,就可以確定瀏覽器的能力。事實上,這是一種確定瀏覽器安全色的常用方法。比如確定pattern屬性,在javascrip中添加一小段代碼:
alert(‘pattern’ in document.creatElement(‘input’));//Boolean
//建立了一個新的input元素,並確定了裡面的pattern屬性瀏覽器是否支援。
也可以:
<script>
If(!’pattern’ in document.creatElement(‘input’)){
//做操作
}
</script>
5.2.7mark元素(Mark Element)
<mark>元素作為高亮。此標籤包裹的字串應該與使用者當前的行動相關聯。
5.2.8div
div應該用在沒有更好的元素的時候。比如需要包裹一段代碼塊在對內容定位處理的封裝單元內。但是如果是文章,最好用<artical>,如果是連結清單,就用<nav>。
5.2.9小知識
· SVG(scalable vector graphics)不是HTML5,它是基於可延伸標記語言 (XML)(XML),用於描述二維向量圖的一種圖形格式。
· Geolocation不是HTML5,它意味地理位置,通過HTML5能夠使web應用程式確定位置並提供更多相關資訊。
· 檢索自訂屬性的價值:
5.3.0data屬性
Html代碼部分:<div id=”myDiv”data-custom-attr=”My Value”>lady嘎嘎</div>
檢索:
var theDiv = document.getElementById(“myDiv”);
var attr = theDiv.getAttribute(“data-custom-attr”);
alert(attr);//My Value
· 此屬性在CSS中的應用
CSS代碼:
.data_custom{display:inline-block;position:relative;}
.data_custom:hover{color:ransparent;}
.data_custom:hover:after{
content:attr(data-hover-response);
color:black;
position:absolute;
left:0;
}
HTML代碼:
<a class=”data_custom”data-hover-response=”我說過不要碰我!”href=”#”>不要碰我,嘎嘎</a>
註:瀏覽器支援偽類after一季content的attr的前提下。
5.3.1使用地區input建立滑塊
HTML5引進了range類型的input。
<input type=”range”>,它可以接收min,max,step和value屬性等。
· 標籤
<form method=”post”>
<h4>音量控制</h4>
<input type=”range” name=”range” min=”0” max=”10” step=”1”value=””/>
<output name=”result”></output>
</form>
· CSS
使用:before和:after告知使用者指定的最大值和最小值
input {font-size:14px;font-weight:bold;}
input[type=range]:before{content:attr(min):padding-right:5px;}
input[type=range]:after{content:attr(max):padding-left:5px}
output{
display:block;
font-size:5.5em;
font-weight:bold;
}
· JavaScript
l 檢測瀏覽器是否能夠識別rangeinput,如果不識別就顯示提示資訊;
l 當使用者移動滑塊的時候,動態改變output的值;
l 監聽,當使用者離開滑塊的時候,就插入值,同時本機存放區;
l 然後當重新整理頁面的時候,選擇的地區和值會自動地設定成最後一次的選擇。
(function(){
var f =document.forms[0],//返回對象中對所有文檔的引用
range=f[‘range’],
result=f[‘result’],
cachedRangeValue=localStorage.rangeValue?localStorage.rangeValue:5;
//檢測瀏覽器是否足夠酷
//識別range input
var o =document.creatElement(‘input’);
o.type=’range’;
if(o.type==’text’)
alert(‘不好意思,你的瀏覽器還不夠酷,試試最新的chrome瀏覽器吧!’);
//設定初始值
//無論是否本機存放區了,都設定為5
range.value=cachedRangeValue;
result.value=cachedRangeValue;
//當使用者選擇了一個值,更新本機存放區
range.addEventListener(“mouseup”,function(){
alert(“你的選擇是:”+range.value+”我現在正在用本機存放區儲存此值。在瀏覽器上重新整理驗證。”);
localStorage?(localStorage.rangeValue=range.value):alert(“資料儲存到了資料庫或是其它地方。”);
},false);
//滑動顯示選擇的值
range.addEventListner(“change”,function(){
result.value=range.value;
},false);
})();
html5新特性