Canvas.height - キャンパスの高さを取得、変更する

投稿日: / 更新日:

JavaScriptの、Canvasオブジェクトのheightは、キャンパスの描画領域の高さを取得、変更するプロパティです。指定しない場合のデフォルトの高さは150px(横幅は300px)です。HTMLでcanvas要素にheight属性を指定した場合(<canvas height="100">)と、このプロパティを指定した場合は同じ効果です。

横幅(widthプロパティ)と同じルールがあります。まずスタイルシートで指定するcanvas要素の見た目の高さと、heightプロパティで指定する描画領域の高さは別物だということです。仮にスタイルシートで500px、プロパティで100pxを指定した場合、ブラウザに表示される際に5倍の大きさに図が引き伸ばされます。ブラウザに表示される時は、スタイルシートで指定したサイズに辻褄が合うように拡大、縮小されることを意識しておきましょう。

次に描画領域のサイズ(width、またはheight)に変更を加えると、それまでの描画内容が失われてしまうことです。変更とは、現在と同じ値を新たに指定した時も含まれます。

サンプルコード

<canvas id="target"></canvas>
// キャンパス要素を取得
var canvas = document.getElementById( "target" ) ;

// キャンパスの描画領域の高さを500pxに変更する
canvas.height = 500 ;

// キャンパスの描画領域の高さを取得
var height = canvas.height ;

デモ

「塗りつぶし」のボタンを押すと、描画領域の左上から横幅50px、高さ50pxの範囲を塗りつぶします。描画領域がどのようなものかを示すために、スタイルシートでcanvas要素を横幅200px、高さ200pxに指定して、一方で、プロパティではwidthを200px、heightを100pxにしました。そのため、正方形に塗りつぶしても見た目上は高さだけ2倍に引き伸ばされるので違って見えます。また、「高さを更新」のボタンを押すと、heightプロパティの値を更新します。更新するとそれまでの描画内容が失われてしまう点を確認して下さい。

構文

height = canvas.height ;
canvas.height = newHeight ;

引数

項目説明
newHeight値を代入した場合、描画領域の高さを変更する。値は数値で指定する。デフォルトでは描画領域の大きさは横幅が300px、高さが150pxとなっている。

戻り値

項目説明
height現在のcanvasの描画領域の高さを取得する。

ノート

サポート状況
主要な全てのブラウザがサポートしている。Ie8以下はcanvas自体に対応していない。
2種類の高さがある
ブラウザでユーザーが実際に見る見た目の高さと、キャンパスで描画するため内部で管理されている描画領域の高さは別物であり、分けて考えないといけない。ブラウザの表示では、スタイルシートで指定した高さに合わせて強制的に拡大、縮小される。当然、ここでいう拡大、縮小は見た目のことであり描画領域のサイズ自体に変更があるわけではない。
高さを変更するとリセット
描画領域の横幅、または高さを更新した場合、それまでの描画内容が失われてしまう。100pxの時に100pxを指定する、つまり、同じサイズを新しく指定しても変更したのと同じ扱いで描画内容は失われる。
デフォルトの高さは150px
明示的にwidthheightを指定しないと混乱の元となるが、描画領域のデフォルト値は横幅が300px、高さが150pxである。スタイルシートでcanvas要素の見た目のサイズだけを決めて描画を始めると、想定外のアスペクト比となることがある。