Web基礎之HTML5
+概述:HTML5是W3C 與 WHATWG 合作的結果。
+新特性:
1)canvas:用於繪畫;
2)video/audio:用於媒體播放;
3)web離線存儲;
4)新的特殊內容元素:article、footer、header、nav、section
5)新的表單控制項:calendar、date、time、email、url、search
+ <video src=「a.mp4」 controls=「controls」>
用於播放視頻,支持的視頻格式有:Ogg,MPEG4,WebM。但不是所有瀏覽器支持;
* 屬性:
-> autoplay=「autoplay」:視頻在就緒後馬上播放;
-> controls=「controls」:顯示控制項欄,功能包括:播放、暫停、定位、音量、全屏切換、字幕(如果要可用)、音軌(如果可用)
->width/height:播放器寬高
->loop=「loop」:視頻在結束後重新開始
->preload=「preload」:視頻在頁面載入時進行載入,並預備播放(若使用了autoplay,則無效)
->src=「」:要播放的url;
* Dom操作video的方法及事件
方法:play() pause() load() canPlayType
屬性:currentSrc currentTime videoWidth/videoHeight duration ended error paused muted seeking volume width/height
事件:play pause progress error timeupdate ended abort empty emptied waiting loadedmetadata
+ <audio src="song.ogg" controls="controls">
播放音頻:
* 屬性:同Video
+ Drag/drop
用於對元素的拖放,是HTML5的標準組成,任何元素都能拖放。
* 使用步驟:
1)設置元素為可拖放。如:<img draggable="true" />
2)拖動什麼。規定當元素拖動時的回調方法ondragstart和setData()。
<img id="drag1" src="img_logo.gif" draggable=「true" ondragstart=「drag(event)」/>
…
function drag(ev){ ev.dataTransfer.setData(「Text",ev.target.id); }
3)放到何處。在ondragover事件中規定放置何處。默認無法將數據/元素放置到其他元素中。如果需要設置允許放置,我們必須阻止對元素的默認處理方式。通過調用 ondragover 事件的 event.preventDefault() 方法;
4)進行放置。ondrop,當放置被拖元素時,會發生drop事件。
function drop(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data)); }
canvas:畫布,使用JavaScript在網頁上繪製圖像;
1)創建:<canvas id="myCanvas" width_="200" height=「100"></canvas>
2)通過javaScript繪製:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
</script>
【cxt下的方法API類似於java下的Canvas的方法API】
+ SVG(Scalable Vector Graphics):可伸縮矢量圖形,在放大或改變尺寸的情況下其圖形質量不會有損失,用於定義用於網路的基於矢量的圖形,可用xml來定義。
1)與其他圖像如jpg/gif的優勢:
—> 可通過文本編輯器來創建和修改;
—> 可被搜索、索引、腳本化或壓縮;
—> 可伸縮的;
—> 可在任何的解析度下被高質量地列印;
—> 可在圖像質量不下降的情況下被放大;
<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
<polygon points="100,10 40,180 190,60 10,60 160,180"
stylex="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
</body>
【註:Canvas與SVG的區別】
Canvas:
—> 依賴解析度
—> 不支持事件處理器
—> 弱的文本渲染能力
—> 能夠以 .png 或 .jpg 格式保存結果圖像
—> 最適合圖像密集型的遊戲,其中的許多對象會被頻繁重繪
SVG
—> 不依賴解析度
—> 支持事件處理器
—> 最適合帶有大型渲染區域的應用程序(比如谷歌地圖)
—> 複雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)
—> 不適合遊戲應用
地理定位Geolocation:
Geolocation API 用於獲得用戶的地理位置。鑒於該特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的。
使用 :getCurrentPosition() 方法來獲得用戶的位置。
function getLocation(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition); }
else{
x.innerHTML="Geolocation is not supported by this browser.";}
}
web存儲
兩種新方法:
1)localStorage:沒有時間限制的數據存儲
2)sessionStorage:針對一個session的數據存儲;當用戶關閉瀏覽器後,數據會被刪除。
【註:這些都是由 cookie 完成的。但是 cookie 不適合大量數據的存儲,因為它們由每個對伺服器的請求來傳遞,這使得 cookie 速度很慢而且效率也不高。】
<script type="text/javascript">
if (localStorage.pagecount){
localStorage.pagecount=Number(localStorage.pagecount) +1;
}else {
localStorage.pagecount=1;}
document.write("Visits "+ localStorage.pagecount + " time(s).");
</script>
<script type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
Application Cache:應用程序緩存。
* 三個優勢:
->離線瀏覽;
->速度:已緩存資源載入更快;
->減小伺服器負載:瀏覽器將只從伺服器下載更新過或更改過的資源;
1)manifest:在html標籤中包含manifest標籤即可,<html manifest=「demo.appcache">
【注意:每個指定了 manifest 的頁面在用戶對其訪問時都會被緩存。如果未指定 manifest 屬性,則頁面不會被緩存(除非在 manifest 文件中直接指定了該頁面);manifest 文件的建議的文件擴展名是:」.appcache」;manifest 文件需要配置正確的 MIME-type,即 "text/cache-manifest"。必須在 web 伺服器上進行配置。】
包含三個部分:
1)CACHE MANIFEST - 在此標題下列出的文件將在首次下載後進行緩存
2)NETWORK - 在此標題下列出的文件需要與伺服器的連接,且不會被緩存
3)FALLBACK - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面)
+ Web Worker:後臺任務。是運行在後臺的 JavaScript,獨立於其他腳本,不會影響頁面的性能。您可以繼續做任何願意做的事情:點擊、選取內容等等,而此時 web worker 在後臺運行。
1)創建:if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); }
2)監聽:w.onmessage=function(event){document.getElementById(「result").innerHTML=event.data;};
3)終止:w.terminate();
【注意:由於web workder位於外部文件中,無法以訪問:window對象、document、parent對象】
+ server-sent event:伺服器發送事件,允許網頁獲得來自伺服器的更新。
* 單向消息傳遞。除了IE外都支持。
1)創建一個EventSource對象,然後規定發送更新的頁面的url;
2)每接收一次更新,就會發生onmessage事件
3)在onmessage事件中取出數據。
var source=new EventSource("demo_sse.php");
source.onmessage=function(event) {
document.getElementById("result").innerHTML+=event.data + "<br />";};
注意:伺服器端須將Content-Type設置為text/event-stream】
其他事件:
—> onopen:當與伺服器的連接被打開
—> onerror:當錯誤發生
+ Input元素新增類型:
—> email:用於應該包含 e-mail 地址的輸入域。
—> url:應該包含 URL 地址的輸入域。
—> number:用於應該包含數值的輸入域(包括max、min、step、value屬性)。
—> range:滑動條,包含一定範圍內數字值的輸入域。(包括max、min、step、value屬性)
—> Date pickers:多個可供選取日期和時間的新輸入類型:date(日/月/年)、month、week、time(時/分)、datetime(日/月/年/時/分)、datetime-local
—> search:用於搜索域
—> color:
+ Input/Form新增屬性:
—> autocomplete:規定form或input域應該擁有自動完成功能,適用元素<input>下的:text, search, url, telephone, email, password, date pickers, range 以及 color
<form action="demo_form.asp" method="get" autocomplete=「on">
<input type="email" name="email" autocomplete="off" />
—> autofocus:規定在頁面載入時,域自動獲得焦點。
<input type="text" name="user_name" autofocus="autofocus" />
—> form:規定輸入域所屬的是一個或個全表單
<input type="text" name="lname" form="user_form" />
—> form overrides(formaction,formenctype,formmethod,formtarget):即重寫這些屬性。適用於<input>下的:submit和image,如:
<input type="submit" formaction="demo_admin.asp" value="sure" />
—> height/width:規定用於 image 類型的 input 標籤的圖像高度和寬度。
—> list:規定輸入域的 datalist。datalist 是輸入域的選項列表。
—> min/max/step:用於為包含數字或日期的 input 類型規定限定(約束),適用於<input>下的:data pickers、number、range
—> multiple:規定輸入域中可選擇多個值。適用於<input>下的:email和file
—> pattern(regexp):規定用於驗證 input 域的模式(pattern)。適用於<input>下的:text, search, url, telephone, email 以及 password。
—> placeholder:提供一種提示(hint),描述輸入域所期待的值.
—> required:規定必須在提交之前填寫輸入域(不能為空)。
<input type="text" name="usr_name" required="required" />
—> novalidate:規定在提交表單時不應該驗證 form 或 input 域。適用於<input>下的:text, search, url, telephone, email, password, date pickers, range 以及 color.
<form action="demo_form.asp" method="get" novalidate=「true">
+ Form元素新增元素:
—> datalist:輸入框下帶一個選項列表,列表是通過 datalist 內的 option 元素創建的。
<input type="url" list="url_list" name="link" />
<datalist id="url_list">
<option label="W3School" value="http://www.W3School.com.cn" />
<option label="Google" value="http://www.google.com" />
<option label="Microsoft" value="http://www.microsoft.com" />
</datalist>
【注意:option 元素永遠都要設置 value 屬性。】
—> keygen:密鑰對生成器(key-pair generator),是提供一種驗證用戶的可靠方法,當提交表單時,會生成兩個鍵,一個是私鑰,一個公鑰。
私鑰(private key)存儲於客戶端,公鑰(public key)則被發送到伺服器。公鑰可用於之後驗證用戶的客戶端證書(client certificate)。但各瀏覽器支持度都不是很好。
—> output:用於不同類型的輸出,比如計算或腳本輸出。
推薦閱讀: