摘要:本文作者利用一些簡(jiǎn)單的對(duì)進(jìn)行了系統(tǒng)的總結(jié),受益匪淺,毫不夸張的說,學(xué)習(xí)這一篇文章就夠了一簡(jiǎn)介是新增的,一個(gè)可以使用腳本通常為在其中繪制圖像的元素。
本文作者利用一些簡(jiǎn)單的 demo 對(duì) Canvas 進(jìn)行了系統(tǒng)的總結(jié),受益匪淺,毫不夸張的說,學(xué)習(xí) Canvas 這一篇文章就夠了!一、canvas簡(jiǎn)介
? 是 HTML5 新增的,一個(gè)可以使用腳本(通常為JavaScript)在其中繪制圖像的 HTML 元素。它可以用來(lái)制作照片集或者制作簡(jiǎn)單(也不是那么簡(jiǎn)單)的動(dòng)畫,甚至可以進(jìn)行實(shí)時(shí)視頻處理和渲染。
? 它最初由蘋果內(nèi)部使用自己MacOS X WebKit推出,供應(yīng)用程序使用像儀表盤的構(gòu)件和 Safari 瀏覽器使用。 后來(lái),有人通過Gecko內(nèi)核的瀏覽器 (尤其是Mozilla和Firefox),Opera和Chrome和超文本網(wǎng)絡(luò)應(yīng)用技術(shù)工作組建議為下一代的網(wǎng)絡(luò)技術(shù)使用該元素。
? Canvas是由HTML代碼配合高度和寬度屬性而定義出的可繪制區(qū)域。JavaScript代碼可以訪問該區(qū)域,類似于其他通用的二維API,通過一套完整的繪圖函數(shù)來(lái)動(dòng)態(tài)生成圖形。
? Mozilla 程序從 Gecko 1.8 (Firefox 1.5)開始支持 , Internet Explorer 從IE9開始 。Chrome和Opera 9+ 也支持 。
二、Canvas基本使用 2.1 元素? 看起來(lái)和標(biāo)簽一樣,只是 只有兩個(gè)可選的屬性 width、heigth 屬性,而沒有 src、alt 屬性。
? 如果不給設(shè)置widht、height屬性時(shí),則默認(rèn) width為300、height為150,單位都是px。也可以使用css屬性來(lái)設(shè)置寬高,但是如寬高屬性和初始比例不一致,他會(huì)出現(xiàn)扭曲。所以,建議永遠(yuǎn)不要使用css屬性來(lái)設(shè)置的寬高。
替換內(nèi)容? 由于某些較老的瀏覽器(尤其是IE9之前的IE瀏覽器)或者瀏覽器不支持HTML元素,在這些瀏覽器上你應(yīng)該總是能展示替代內(nèi)容。
? 支持的瀏覽器會(huì)只渲染標(biāo)簽,而忽略其中的替代內(nèi)容。不支持 的瀏覽器則 會(huì)直接渲染替代內(nèi)容。
用文本替換:
用替換:
結(jié)束標(biāo)簽不可省
與 元素不同,元素需要結(jié)束標(biāo)簽()。如果結(jié)束標(biāo)簽不存在,則文檔的其余部分會(huì)被認(rèn)為是替代內(nèi)容,將不會(huì)顯示出來(lái)。
? 會(huì)創(chuàng)建一個(gè)固定大小的畫布,會(huì)公開一個(gè)或多個(gè) 渲染上下文(畫筆),使用 渲染上下文來(lái)繪制和處理要展示的內(nèi)容。
? 我們重點(diǎn)研究 2D渲染上下文。 其他的上下文我們暫不研究,比如, WebGL使用了基于OpenGL ES的3D上下文 (“experimental-webgl”) 。
var canvas = document.getElementById("tutorial"); //獲得 2d 上下文對(duì)象 var ctx = canvas.getContext("2d");2.3 檢測(cè)支持性
var canvas = document.getElementById("tutorial"); if (canvas.getContext){ var ctx = canvas.getContext("2d"); // drawing code here } else { // canvas-unsupported code here }2.4 代碼模板
Canvas tutorial