私はwidth
とheight
属性のないキャンバスタグを持っています。キャンバスにはインラインの幅と高さがあります。今ではlinearGradient
を適用すると、キャンバス全体をカバーすることはできません。デモ:なぜfillRectはキャンバス全体をカバーしていませんか?
var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
var gradient1 = ctx.createLinearGradient(0, 0, 150, 0);
gradient1.addColorStop(0, "#123456");
gradient1.addColorStop(1, "#654321");
ctx.fillStyle = gradient1;
ctx.fillRect(0, 0, 150, 100);
canvas {
border: 1px dotted red;
}
<canvas id="canvas" style="width: 150px; height: 100px;"></canvas>
Question1:なぜキャンバスの全体150ピクセルはカバーされませんか?キャンバスタグにwidth="150"
とheight="100"
の属性を追加すると、なぜキャンバス全体が塗りつぶされますか?
質問2:以下のスクリプトc.width
は300px
ではなく、150px
を返します。なぜですか?
var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
console.log(c.width);
console.log(c.height);
canvas {
border: 1px dotted red;
}
<canvas id="canvas" style="width: 150px; height: 100px;"></canvas>
Question3:ビューボックスをSVGのようなもののために、この動作は?
チェック重複;) – Andreas
はうん、基本的には同じことをのを複製します。 :P –