<canvas>は、HTML5のまったく新しい要素であり、JavaScriptがグラフィックを描画するために使用できます。最初に、<canvas>は、Safariに適用されたAppleのMac OS Xダッシュボードに導入され、次にFirefoxブラウザーなどのこの新しい要素もサポートするGecko1.8ブラウザーに基づいています。今日、<canvas>要素はHTML5標準仕様の一部です。
このチュートリアルを通じて<canvas>ができることを説明し、アプリケーション<canvas>の出発点として使用できます。学習<canvas>要素は難しくありません。 HTMLとJavaScriptの基本的な知識、およびFirefoxブラウザー、Safari最新バージョン、またはOpera9+のみが必要なだけで、すべての例の効果を確認できるようにする必要があります。
次に、<canvas>要素を定義する方法から始めましょう。
<キャンバスID =チュートリアル幅= 150高さ= 150> </canvas>
<canvas>要素には、幅と高さの2つの属性のみがあり、オプションであり、DOMまたはCSSを使用して制御できます。幅と高さが設定されていない場合、デフォルトの幅は300ピクセル、高さ150ピクセルが使用されます。 <canvas>のサイズはCSSを介して制御および調整できますが、レンダリングされた画像を拡張してレイアウトに適応します。レンダリング結果が変形しているように見えることがわかったら、CSSに依存する必要はありません。 <canvas>に表示される幅と高さの値を指定できます。標準のHTMLタグと同様に、ID属性も定義することができ、スクリプトアプリケーションをより便利にすることができます。 <canvas>要素は、通常の画像のように、そのスタイル(マージン、境界、背景など)を指定できます。ただし、これらのスタイルは、キャンバスによって生成された実際の画像に影響を与えません。
この要素は比較的新しいため、すべてのブラウザがそれをサポートしているわけではないため、正常に閲覧できない人に代替の表示情報を提供する必要があります。テキストや写真を使用できます。
- <canvasid = stockgraphwidth = 150height = 150>
- ブラウザは<canvas>要素をサポートしていません。
- </canvas>
- <canvasid = clockwidth = 150height = 150>
- <imgsrc = images.pngwidth = 150height = 150alt = epplace image/
- </canvas>
Apple Safariでは、<canvas>の実装は<img>に非常に似ており、エンドタグはありません。ただし、<canvas>がWebの世界で広く適用できるようにするには、代替コンテンツに滞在する場所を提供する必要があるため、Mozillaの実装でタグ(</canvas>)を終了する必要があります。 <canvas id = foo ...> </canvas>はSafariとMozillaと完全に互換性があります - Safariは単に終了タグを無視します。代替コンテンツがある場合は、いくつかのCSSトリックを使用して、Safariの代替コンテンツのみを非表示にすることができます。これらの代替コンテンツはIEで表示する必要がありますが、Safariでは表示されません。
<canvas>は、表示するものを制御できる1つ以上のレンダリングコンテキストを備えた固定サイズの図面画面を作成します。現在の唯一のオプションでもある2Dレンダリングに焦点を当てています。将来、OpenGL ESに基づいて3Dレンダリングを追加する場合があります。
- varcanvas = document.getElementById( 'Tutorial');
- varctx = canvas.getContext( '2d');
上記のコードを説明しましょう。 <canvas>の初期化は空白です。スクリプトを描画するには、最初にコンテキストをレンダリングする必要があります。 Canvas ElementオブジェクトのgetContextメソッドを介して取得できます。同時に、描画のために呼び出される必要があるいくつかの関数も取得されます。 getContext()は、そのタイプを引数として説明する値を受け入れます。上記の最初の行は、getElementByIDメソッドを介してキャンバスオブジェクトのDOMノードを取得します。次に、getContextメソッドを使用して、描画操作コンテキストを取得します。さらに、スクリプトを使用して、<canvas>のブラウザのサポート、つまりgetContextが存在するかどうかを判断することもできます。
- varcanvas = document.getElementById( 'Tutorial');
- if(canvas.getContext){
- varctx = canvas.getContext( '2d');
- // DrawingCodeHere
- }それ以外{
- // canvas-unsupportedcodehere
- }
以下の最もシンプルなテンプレートから始めて、それらをローカルバックアップにコピーできます。
- <html>
- <head>
- <title> canvastutorial </title>
- <scriptType = text/javascript>
- functiondraw(){
- varcanvas = document.getElementById( 'Tutorial');
- if(canvas.getContext){
- varctx = canvas.getContext( '2d');
- }
- }
- </script>
- <styletype = text/css>
- Canvas {border:1pxsolidblack;}
- </style>
- </head>
- <bodyonload = draw();>
- <canvasid = tutorialwidth = 150height = 150> </canvas>
- </body>
- </html>
慎重に、ページがロードされた後に1回(ボディタグのオンロードプロパティを設定することにより)実行されるdrawという関数があり、もちろん、Settimeout、SetInterval、またはその他のイベント処理機能でも呼ばれます。
まず、簡単に見てみましょう - 2つのインターレースの長方形を描画します。そのうちの1つはアルファ透明な効果があります。次の例で、それがどのように機能するかを詳細に見てみましょう。
- <html>
- <head>
- <scriptType = application/x-javascript>
- functiondraw(){
- varcanvas = document.getElementById(canvas);
- if(canvas.getContext){
- varctx = 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>
- <bodyonload = draw();>
- <canvasid = canvaswidth = 150height = 150> </canvas>
- </body>
- </html>
上記のコードをHTMLファイルにコピーして実行できます。レンダリング: