簡単な答え: CSS セレクターで canvas 要素を適切にターゲットにしていない可能性があります。
長い「答え」: 注意すべき点がいくつかあると思います。
height
タグのまたはwidth
属性を変更すると、canvas
完全に消去されます (つまり、タグに描画されたものはすべて削除され、白紙の状態にリセットされます)。(どうやら、これは一部のブラウザーでは発生しません。)
<canvas>
要素の場合、またはheight
属性はおよびwidth
の CSS プロパティと一意の関係を持ちます。height
width
height
またはwidth
属性への変更は「トランジション」/アニメーション化されません
height
またはwidth
属性の CSS プロパティへの変更は「遷移」/アニメーション化されます
私はここでこれのいくつかをデモしました:
http://jsfiddle.net/BYossarian/WWtGZ/3/
HTML:
<canvas id="canvas1" height="50" width="100"></canvas>
CSS:
canvas {
border: 1px solid black;
transition: all 1s ease;
height: 50px;
}
JS:
var canvas = document.getElementById('canvas1'),
ctx = canvas.getContext('2d');
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 30, 30);
// changing width attribute clears canvas element (in most broswers)
// changing width attribute isn't animated by CSS transition
setTimeout(function () {
canvas.width = "200";
}, 2000);
// changing CSS rule for width is animated, although if no CSS rule for width already exists, then a width of 0px is taken as the starting point
setTimeout(function () {
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 30, 30);
canvas.style.width = "100px";
}, 4000);