HTML5易漏知識點錦集

本文通過對w3schoolHTML5基礎教程,整理出比較常見的卻又容易遺忘或者忽略的HTML5相關知識點。本文的標題順序與w3school中的HTML5基礎教程標題順序保持一致。適合翻閱和複習。

1.HTML 5 視頻

(1)視頻格式
當前,video 元素支持三種視頻格式:
視頻格式
(2)一種兼容的做法
video 元素允許多個 source 元素。source 元素可以鏈接不同的視頻文件。瀏覽器將使用第一個可識別的格式:

<video width="320" height="240" controls="controls">
  <source src="movie.ogg" type="video/ogg">
  <source src="movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

(3)HTML5 - 方法、屬性以及事件
下面列出了大多數瀏覽器支持的視頻方法、屬性和事件:
HTML5 <video> - 方法、屬性以及事件

2.HTML 5 音頻

(1)音頻格式
當前,audio 元素支持三種音頻格式:
音頻格式
(2)一種兼容的做法
audio 元素允許多個 source 元素。source 元素可以鏈接不同的音頻文件。瀏覽器將使用第一個可識別的格式:

<audio controls="controls">
  <source src="song.ogg" type="audio/ogg">
  <source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>

(3)<audio> 標籤的屬性
<code><audio></code> 標籤的屬性

3.HTML 5 拖放

(1)設置元素爲可拖放
首先,爲了使元素可拖動,把 draggable 屬性設置爲 true :

<img draggable="true" />

(2)拖動什麼 - ondragstart 和 setData()
ondragstart 屬性調用了一個函數,drag(event),它規定了被拖動的數據。
dataTransfer.setData() 方法設置被拖數據的數據類型和值:

function drag(ev){
    ev.dataTransfer.setData("Text",ev.target.id);
}

(3)放到何處 - ondragover
ondragover 事件規定在何處放置被拖動的數據。
默認地,無法將數據/元素放置到其他元素中。如果需要設置允許放置,我們必須阻止對元素的默認處理方式。
這要通過調用 ondragover 事件的 event.preventDefault() 方法:

event.preventDefault()

(4)進行放置 - ondrop

function drop(ev){
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
}

4.HTML 5 Canvas

具體屬性和方法調用查看:HTML 5 Canvas 參考手冊
(1)創建 Canvas 元素

<canvas id="myCanvas" width="200" height="100"></canvas>

(2)通過 JavaScript 來繪製
canvas 元素本身是沒有繪圖能力的。所有的繪製工作必須在 JavaScript 內部完成:

<script type="text/javascript">
    // 拿到canvas(必須)
    var c=document.getElementById("myCanvas");
    // 創建畫布(必須)
    var cxt=c.getContext("2d");
    // 開始繪製
    cxt.fillStyle="#FF0000";
        // 在畫布上繪製 150x75 的矩形,從左上角開始 (0,0)
    cxt.fillRect(0,0,150,75);
</script>

5.HTML5 內聯 SVG

具體屬性和方法調用查看:SVG 參考手冊
(1)什麼是SVG?

  • SVG 指可伸縮矢量圖形 (Scalable Vector Graphics)
  • SVG 用於定義用於網絡的基於矢量的圖形
  • SVG 使用XML 格式定義圖形
  • SVG 是萬維網聯盟的標準

(2)SVG 的優勢

  • SVG 圖像可通過文本編輯器來創建和修改
  • SVG 圖像可被搜索、索引、腳本化或壓縮
  • SVG 是可伸縮的
  • SVG圖像可在任何的分辨率下被高質量地打印
  • SVG 可在圖像質量不下降的情況下被放大

(3)把 SVG 直接嵌入 HTML 頁面
實例:

<!DOCTYPE html>
<html>
<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"
  style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>

</body>
</html>

6.HTML5 地理定位

(1)HTML5 - 使用地理定位
實例:

<script>
var x=document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  }
  else {
      x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position) {
  x.innerHTML="Latitude: " + position.coords.latitude +
  "<br />Longitude: " + position.coords.longitude;
}
</script>

(2)getCurrentPosition() 方法 - 返回數據
getCurrentPosition()

7.HTML 5 Web 存儲

(1)localStorage 方法(沒有時間限制的數據存儲)
localStorage 方法存儲的數據沒有時間限制,需同域名才能訪問得到,實例:

<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>

(2)sessionStorage 方法(針對一個 session 的數據存儲)

sessionStorage 方法針對一個 session 進行數據存儲。當用戶關閉瀏覽器窗口後,數據會被刪除。實例:

<script type="text/javascript">
    if (sessionStorage.pagecount) {
      sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
    }
    else {
      sessionStorage.pagecount=1;
    }
    document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");
</script>

8.HTML 5 應用程序緩存

(1)Cache Manifest 基礎
如需啓用應用程序緩存,請在文檔的 標籤中包含 manifest 屬性:

<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>

(2)Manifest 文件

  • CACHE MANIFEST - 在此標題下列出的文件將在首次下載後進行緩存
  • NETWORK - 在此標題下列出的文件需要與服務器的連接,且不會被緩存
  • FALLBACK - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面)

9.HTML 5 Web Workers

(1)什麼是 Web Worker?
web worker 是運行在後臺的 JavaScript,獨立於其他腳本,不會影響頁面的性能。您可以繼續做任何願意做的事情:點擊、選取內容等等,而此時 web worker 在後臺運行。
(2)檢測 Web Worker 支持

if(typeof(Worker)!=="undefined") {
  // Yes! Web worker support!
  // Some code.....
}
else {
  // Sorry! No Web Worker support..
}

(3)創建 Web Worker 對象

if(typeof(w)=="undefined") {
  w=new Worker("demo_workers.js");
}

(4)終止 Web Worker
如需終止 web worker,並釋放瀏覽器/計算機資源,請使用 terminate() 方法:

w.terminate();

10.HTML 5 服務器發送事件

(1)Server-Sent 事件 - 單向消息傳遞
Server-Sent 事件指的是網頁自動獲取來自服務器的更新。
(2)接收 Server-Sent 事件通知

var source=new EventSource("demo_sse.php");
    source.onmessage=function(event){
        document.getElementById("result").innerHTML+=event.data + "<br />";
    };

11.HTML5 Input 類型

HTML5 新的 Input 類型:
HTML5 新的 Input 類型

12.HTML5 表單元素

HTML5 的新的表單元素:
HTML5 的新的表單元素

13.HTML5 表單屬性

HTML5 的新的表單屬性:
HTML5 的新的表單屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章