キャンバス要素の寸法をアニメーション化しようとしています(例えば、高さを上げるなど)。問題はキャンバス要素が正しく動作するために固定幅と高さが必要なため、純粋なCSSアニメーションは機能しません。キャンバス要素の寸法をアニメートする
まともなフレームレートを維持しながら、これをアニメーション化する最も効率的な方法は何でしょうか?
キャンバス要素の寸法をアニメーション化しようとしています(例えば、高さを上げるなど)。問題はキャンバス要素が正しく動作するために固定幅と高さが必要なため、純粋なCSSアニメーションは機能しません。キャンバス要素の寸法をアニメートする
まともなフレームレートを維持しながら、これをアニメーション化する最も効率的な方法は何でしょうか?
あなたはCSS3アニメーションを使用することができ、それが働いて...
$(".btn").click(function(){
$("#myCanvas").addClass("animated-class");
});
#myCanvas{
border:solid 1px black;
}
.animated-class{
animation:test 1s linear forwards;
}
@keyframes test{
from{height:100px}
to{height:300px}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn">Full page</button>
<canvas id="myCanvas" width="200" height="100"></canvas>
あなたが本当に要素の高さを変更する必要がありますか?あなたはちょうどコンテンツの高さを更新できませんか? – Kaiido
@Kaiido残念ながら、はい。キャンバスはページの半分のように表示されますが、ユーザーはそれをクリックしてページのフルサイズに展開できます。キャンバスをコンテナの背景イメージにすることも考えましたが、インタラクティブにする必要もあります。 – mattrick
キャンバス要素の 'width'と' height'プロパティを変更すると残念なことに、添付されたコンテキストのすべてのプロパティがリセットされるため遅いです。 1つの方法は、CSSを介してそれを行うこと、遷移イベント(まだ広くはサポートされていない)を待つこと、およびcssアニメーションがその仕事を終えた後にのみプロパティを更新することである。この方法では、キャンバスはおそらくトランジション中は少し離れているかもしれませんが、その後はOKです。 – Kaiido