HTML <canvas> 標簽

定義和用法

<canvas> 標簽通常通過腳本(通常是 JavaScript)實時繪制圖形。

<canvas> 標簽是透明的,它只是圖形的容器,必須使用腳本才能實際繪制圖形。

在禁用 JavaScript 的瀏覽器和不支持 <canvas> 的瀏覽器中,會顯示出 <canvas> 元素內部的任何文本。

提示

請在我們的 HTML Canvas 教程中學習有關 <canvas> 元素的更多知識。

如需查看所有屬性和方法的完整參考,請訪問我們的 HTML Canvas 參考手冊

實例

例子 1

實時繪制一個紅色矩形,并在 <canvas> 元素中顯示它:

<canvas id="myCanvas">
您的瀏覽器不支持 canvas 標簽。
</canvas>
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 80, 80);
</script>

親自試一試

例子 2

另一個 <canvas> 例子:

<canvas id="myCanvas">
您的瀏覽器不支持 canvas 標簽。
</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 75, 50);
// 打開透明度
ctx.globalAlpha = 0.2;
ctx.fillStyle = "blue";
ctx.fillRect(50, 50, 75, 50);
ctx.fillStyle = "green";
ctx.fillRect(80, 80, 75, 50);
</script>

親自試一試

屬性

屬性 描述
height 像素值 規定畫布的高度。默認值為 150。
width 像素值 規定畫布的寬度。默認值為 300。

全局屬性

<canvas> 標簽還支持 HTML 中的全局屬性

事件屬性

<canvas> 標簽還支持 HTML 中的事件屬性

默認的 CSS 設置

大多數瀏覽器將使用以下默認值顯示 <canvas> 元素:

canvas {
  height: 150px;
  width: 300px;
}

親自試一試

<canvas> 的歷史

這個 HTML 元素是為了客戶端矢量圖形而設計的。它自己沒有行為,但卻把一個繪圖 API 展現給客戶端 JavaScript 以使腳本能夠把想繪制的東西都繪制到一塊畫布上。

<canvas> 標記由 Apple 在 Safari 1.3 Web 瀏覽器中引入。對 HTML 的這一根本擴展的原因在于,HTML 在 Safari 中的繪圖能力也為 Mac OS X 桌面的 Dashboard 組件所使用,并且 Apple 希望有一種方式在 Dashboard 中支持腳本化的圖形。

Firefox 1.5 和 Opera 9 都跟隨了 Safari 的引領。這兩個瀏覽器都支持 <canvas> 標記。

我們甚至可以在 IE 中使用 <canvas> 標記,并在 IE 的 VML 支持的基礎上用開源的 JavaScript 代碼(由 Google 發起)來構建兼容性的畫布。 參見:http://excanvas.sourceforge.net/

<canvas> 的標準化的努力由一個 Web 瀏覽器廠商的非正式協會在推進,目前 <canvas> 已經成為 HTML 5 草案中一個正式的標簽。 參見:http://www.whatwg.org/specs/web-apps/current-work/

<canvas> 標記和 SVG 以及 VML 之間的差異

<canvas> 標記和 SVG 以及 VML 之間的一個重要的不同是,<canvas> 有一個基于 JavaScript 的繪圖 API,而 SVG 和 VML 使用一個 XML 文檔來描述繪圖。

這兩種方式在功能上是等同的,任何一種都可以用另一種來模擬。從表面上看,它們很不相同,可是,每一種都有強項和弱點。例如,SVG 繪圖很容易編輯,只要從其描述中移除元素就行。

要從同一圖形的一個 <canvas> 標記中移除元素,往往需要擦掉繪圖重新繪制它。

如何使用 <canvas> 標記繪圖

大多數 Canvas 繪圖 API 都沒有定義在 <canvas> 元素本身上,而是定義在通過畫布的 getContext() 方法獲得的一個“繪圖環境”對象上。

Canvas API 也使用了路徑的表示法。但是,路徑由一系列的方法調用來定義,而不是描述為字母和數字的字符串,比如調用 beginPath() 和 arc() 方法。

一旦定義了路徑,其他的方法,如 fill(),都是對此路徑操作。繪圖環境的各種屬性,比如 fillStyle,說明了這些操作如何使用。

注釋:Canvas API 非常緊湊的一個原因上它沒有對繪制文本提供任何支持。要把文本加入到一個 <canvas> 圖形,必須要么自己繪制它再用位圖圖像合并它,或者在 <canvas> 上方使用 CSS 定位來覆蓋 HTML 文本。

瀏覽器支持

表中的數字注明了首個完全支持該元素的瀏覽器版本。

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
4.0 9.0 2.0 3.1 9.0