視覚的に認識できる最小点の値をもう一度見てみました。pt
の変化に気付いた最小単位はでした0.2pt
。
ただし、whileループの増分ごとに1ミリ秒の期間にわたって0.2ポイントのステップで変更を適用すると、まだ少し「遅れている」ように見えることに気付きました。ただし、jsfiddleで実行されていない場合はそうではない可能性があります。
重要なのは、フォントサイズを10ポイントスムーズに変更したい場合は、一度に0.2pt
または0.25pt
または0.5pt
(最もスムーズに見つけたもの)のステップで変更を適用する必要があり、その後、スムーズを維持するために1の間隔を使用する必要があるということです。別の間隔を適用しないでください。適用すると、増分ステップが小さすぎて気付かず、アニメーション全体が再び途切れてしまいます。
この変更を2秒以上強制しようとすると10pt
、使用するフレームワークに関係なく、小数点以下のフォントサイズに視覚的な変更がないため、常に途切れ途切れに見えると思います。
これは私にとって非常にうまくいきました:(
この例ではフォントサイズのアニメーションの減少を考慮していませんが、コース外で追加することができます)
function smoothAnimation($selector, startPoints, points){
var increments = 0.2;
var currentPoints = startPoints;
var endPoints = currentPoints + points;
while(currentPoints < endPoints){
currentPoints += increments;
$selector.animate({"font-size": currentPoints.toString() + "pt"}, 1, "swing");
}
}
$('#msg').click(function() {
$msg = $('#msg');
$msg.animate({"font-size": "80pt"}, 400, "swing");
smoothAnimation($msg, 80, 10);
$msg.animate({"font-size": "40pt"}, 400, "swing");
});
DEMO-滑らかな(っぽい)フォントサイズのアニメーション
滑らかに見えるようにするには、increments
値を0.25
またはに増やします0.5
。スムーズなステップがある場合は、ポイントを他の値に設定でき、2秒のアニメーション間隔を強制しない限り、アニメーションはスムーズに保たれます。