国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

Canvas使用教程——基本語法(Basic usage)

2024-04-27 13:52:41
字體:
來源:轉載
供稿:網友

原文:http://developer.mozilla.org/en/Canvas_tutorial/Basic_usage 

好,現在開始我們的canvas探究之旅……

<canvas id="tutorial" width="150" height="150"></canvas>

乍看上去,該標簽類似于<img>,不過它不支持src和alt屬性,<canvas>標簽僅僅支持2個屬性:width和height。當寬度和高度沒有指定時,他們的默認值為300px和150px。該元素可以象任何普通的圖像一樣應用樣式(margin、border、background等)。但是這些樣式設置并不影響canvas實際的繪制效果。在后續的介紹中我們將知道這是如何發生的,當沒有在<canvas>上應用任何樣式的時候,其初始化默認是完全透明的。

其實我們還可以為canvas標簽指定id或者class等HTML元素都支持的屬性,尤其是為canvas指定一個id,將為今后在腳本操作時指定DOM起到一個關鍵的作用。

Fallback content

值得注意的是,由于canvas在目前來講,還不是一個被所有瀏覽器都支持的標簽,當一個瀏覽器不支持該標簽時,我們需要提供一個“fallback content”來進行告知。

很簡單,我們可以寫些提示信息在<canvas>標簽內,不支持該標簽的瀏覽器將自動忽略標簽并顯示標簽中的文字,而當支持該標簽的瀏覽器解析它時,標簽內的告知文本亦會被忽略。

舉個例子,我們可以采用如下方法對不支持canvas標簽的瀏覽器進行告知:

<canvas id="stockGraph" width="150" height="150">  current stock price: $3.15 +0.15</canvas><canvas id="clock" width="150" height="150">  <img src="images/clock.png" width="150" height="150" alt=""/></canvas>

Required </canvas> tag

在Apple的Safari瀏覽器的解析中,canvas標簽的表現有些類似于<img>,瀏覽器不檢測關門標記。所以,當canvas標簽被正常渲染后,標簽里面的“fallback content”也會一起顯示出來。當然,這個狀況在FireFox中不會存在。

如果不需要“fallback content”,一個簡單的“<canvas id="foo" ...></canvas>”會最大限度的兼容safari和FireFox瀏覽器,此時,safari瀏覽器只是簡單的忽略</canvas>標記,不過,一點影響都沒有。

當然,如果我們一定要寫點“fallback content”的話,我們可以運用一些CSS小技巧,將溢出的內容隱藏掉。

The Rendering Context

<canvas>標簽實際上創建了一個指定尺寸的畫板,供一個或多個指令進行渲染作畫。目前,我們只是注重于其2D渲染功能,不過將來,該標簽應該能夠支持一些更復雜的指令渲染,比如基于OpenGL指令的3D內容。

<canvas>初始只不過是一個空的畫板,如果想要讓它顯示些什么,首先需要腳本去訪問它。canvas帶有一個DOM方法:getContext。申明了這個方法,我們便可以獲得進行畫圖創作的一些內部函數,getContext方法帶有一個參數——context的維數。

var canvas = document.getElementById('tutorial');var ctx = canvas.getContext('2d');

首先我們制定了一個canvas的DOM節點,并執行getContext方法來訪問“drawing contex”,目前支持的參數只有“2d”。

Checking for support

利用以下方法可以很好的規避不支持canvas標簽的瀏覽器:

var canvas = document.getElementById('tutorial');if (canvas.getContext){  var ctx = canvas.getContext('2d');  // drawing code here} else {  // canvas-unsupported code here}

A skeleton template

這里提供一個簡單的模板,我們將在后面的例子中運用到這樣一個標準模板。

<html>  <head>    <title>Canvas tutorial</title>    <script type="text/javascript">      function draw(){        var canvas = document.getElementById('tutorial');        if (canvas.getContext){          var ctx = canvas.getContext('2d');        }      }    </script>    <style type="text/css">      canvas { border: 1px solid black; }    </style>  </head>  <body onload="draw();">    <canvas id="tutorial" width="150" height="150"></canvas>  </body></html>

在以上模板中,我們定義了一個叫draw的方法,并在頁面加載完成后執行它。當然,如果你愿意,你完全可以由其他事件來觸發該函數。

A simple example

在下面的示例中,我們畫了2個相互交疊的舉行,并且其中一個還加上了點alpha透明,接下來,我們將在后面的幾個實例中探索一下一些功能是如何實現的:

<html> <head>  <script type="application/x-javascript">    function draw() {      var canvas = document.getElementById("canvas");      if (canvas.getContext) {        var ctx = canvas.getContext("2d");        ctx.fillStyle = "rgb(200,0,0)";        ctx.fillRect (10, 10, 55, 50);        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";        ctx.fillRect (30, 30, 55, 50);      }    }  </script> </head> <body onload="draw();">   <canvas id="canvas" width="150" height="150"></canvas> </body></html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康马县| 达州市| 宁乡县| 东辽县| 屯昌县| 潜山县| 金坛市| 平舆县| 延庆县| 称多县| 嵊泗县| 仪陇县| 东丽区| 和龙市| 白玉县| 通化市| 宣城市| 安图县| 历史| 海门市| 徐水县| 印江| 城步| 新蔡县| 长岭县| 桂平市| 安平县| 若尔盖县| 南召县| 阿克陶县| 苍山县| 岳普湖县| 绩溪县| 婺源县| 新蔡县| 青阳县| 雷波县| 普陀区| 秦安县| 紫金县| 旬阳县|