プログレスバーをシミュレートするために長方形のキャンバスを作成したいのですが、キャンバスの幅と高さを100%に設定すると、実際には親ほど高くも広くもなりません。
以下の例を参照してください
http://jsfiddle.net/PQS3A/
非正方形のキャンバスを作ることさえ可能ですか?キャンバスの高さと幅をハードコーディングしたくないのは、モバイルデバイスを含め、大画面または小画面で表示すると動的に変化するためです。
プログレスバーをシミュレートするために長方形のキャンバスを作成したいのですが、キャンバスの幅と高さを100%に設定すると、実際には親ほど高くも広くもなりません。
以下の例を参照してください
http://jsfiddle.net/PQS3A/
非正方形のキャンバスを作ることさえ可能ですか?キャンバスの高さと幅をハードコーディングしたくないのは、モバイルデバイスを含め、大画面または小画面で表示すると動的に変化するためです。
問題を修正する実際の例を次に示します。
あなたの例にはいくつかの問題がありました:
<div>
がありません。CSSで設定する必要があります。height
width
position:static
の位置付けの親ではないことを意味します。キャンバスをdivと同じサイズにする場合は、divをposition:relative
(またはabsolute
またはfixed
)に設定する必要があります。width
andheight
属性は、描画するデータのピクセル数(画像の実際のピクセルなど)を指定し、キャンバスの表示サイズとは別のものです。これらの属性は整数に設定する必要があります。上記にリンクされている例では、CSSを使用してdivサイズを設定し、配置された親にします。JS関数(以下に表示)を作成して、配置された親と同じ表示サイズになるようにキャンバスを設定し、次に、表示と同じピクセル数になるように内部プロパティwidth
とプロパティを調整します。height
var canvas = document.querySelector('canvas');
fitToContainer(canvas);
function fitToContainer(canvas){
// Make it visually fill the positioned parent
canvas.style.width ='100%';
canvas.style.height='100%';
// ...then set the internal size to match
canvas.width = canvas.offsetWidth;
canvas.height = canvas.offsetHeight;
}
キャンバスを実際に親要素と同じ大きさにしたい場合は、キャンバスの属性width
と属性を使用します。JQueryheight
を使用して設定できます。
$(document).ready(function() {
var canvas = document.getElementById("theCanvas");
canvas.width = $("#parent").width();
canvas.height = $("#parent").height();
});
JQueryがわからない場合は、次のJavascriptを使用してください。
var canvas = document.getElementById("theCanvas");
var parent = document.getElementById("parent");
canvas.width = parent.offsetWidth;
canvas.height = parent.offsetHeight;
css
高さと幅の属性を使用する場合はstyle="width:100%; height:100%;"
、キャンバスを引き伸ばすだけです。これにより、キャンバスに描画するすべてのものが引き伸ばされたように見えます。
JSFiddleforJavascriptソリューション。
タグの属性の代わりにCSSプロパティを使用します。
<div style="background-color:blue;width:140px;height:20px">
<canvas style="background-color: red;width:100%;height:100%">
</canvas>
</div>