画像を使わずに絵を描ける・動かせるcanvas要素
従来、図形や絵を表示したい場合には、画像ファイルを作成して、img要素を使って表示させるくらいしか方法がありませんでした。また、複雑にアニメーションさせたければ、専用ソフトを使ってFlashなどを作成するしかありませんでした。HTML5で追加されたcanvas要素を使えば、JavaScriptを使って図や絵を描画できます。あらかじめ描く内容をHTMLソース中に記述しておくだけでなく、動的に描画したり、動かしたりもできます。
HTML5のcanvas要素は、以下のような感じで記述します。
<canvas id="名称" width="横幅" height="高さ"> <p>canvas非対応ブラウザ向けの表示</p> </canvas> <script> ~描画するスクリプト~ </script>
この方法で、例えば以下のように描画できます。(Google Chromeでの例)
画像を作らなくても、直接ページ上に絵を描ける
上記の例は、以下のHTMLソースを表示させたものです。(以下のソース全体をそのままコピーしてcanvas.htmlなどの名称で保存すれば、HTMLファイルになります。)
<!DOCTYPE html> <head> <title>HTML5 canvas要素のサンプル</title> </head> <body> <h1>canvas要素のサンプル</h1> <canvas id="example" width="200" height="200"> <p>※このメッセージが見える場合は、HTML5のcanvas要素に対応していません。(ここに代わりの画像などを用意しておきましょう。)</p> </canvas> <script> var example = document.getElementById('example'); var context = example.getContext('2d'); // 橙色の四角形(塗りつぶし)を描く context.fillStyle = "#ff8000"; context.fillRect(95, 20, 50, 90); // 赤色の円を描く context.beginPath(); context.strokeStyle='#ff0000'; context.arc(120, 80, 70, 0, Math.PI*2, false); context.stroke(); // 濃い黄色の円を描く context.beginPath(); context.strokeStyle='#808000'; context.arc(120, 80, 75, 0, Math.PI*2, false); context.stroke(); // 青色の四角形を描く context.strokeStyle='#0000ff'; context.strokeRect(60, 30, 120, 100); // 緑色の三角形を描く context.beginPath(); context.strokeStyle='#008000'; context.moveTo(120, 0); context.lineTo(200, 180); context.lineTo(40, 180); context.closePath(); context.stroke(); </script> </body> </html>
このように、canvas要素で用意した描画領域(キャンバス)内に、JavaScriptを使って自由に描画ができます。上記では、あらかじめ記述した図形を単純に表示させているだけです。しかし、JavaScriptで描画できるわけですから、状況に応じて動的に描画したり動かしたりするなど、様々な描画が行えます。
本記事はcanvas要素の詳しい解説が目的ではありませんので、具体的な説明は割愛致します。詳細な書き方は、今後に改めてご紹介したいと思います。
※canvas要素は、Firefox、Safariなど多くのブラウザが既に対応しています。ただし、IE8は非対応です(今後にリリースされるIE9では対応されます)。
SVGならJavaScriptを使わずに、もっと簡潔に記述できる
このcanvas要素を使う場合は、(動かす必要もなく、動的に生成する必要もなく)単に描画だけをしたい場合であっても、JavaScriptを使う必要があります。これは少々面倒です。しかし、SVG(Scalable Vector Graphics)を使えば、HTMLソースだけで描画を完結できます。JavaScriptは必要ないため、ソースも短くて済みます。
次のページでは、HTMLソースだけで図形を描画できるsvg要素をご紹介します。