以下はjQueryで作ったdiv要素が拡大+移動するアニメーションです。
こちらのサイトを参考に作りました。
https://www.softel.co.jp/blogs/tech/archives/4286
html
1<html> 2<head> 3<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> 4<style type="text/css"> 5<!-- 6div.box { 7 background-color: orange; 8 height: 200px; 9 width: 200px; 10} 11--> 12</style> 13</head> 14<div id="box" class="box"></div> 15<br> 16<script> 17$("#box").animate({paddingRight: 1},{ 18 duration: 5000, 19 queue: false, 20 step: function(now){ 21 $(this).css({transform:"scale(" + now + ")"}); 22 $(this).animate({"marginTop": 500 * now + "px"}); 23 } 24,}); 25</script> 26</body> 27</html>
拡大(0倍→1倍)はduration: 5000
すなわち5秒で完了するのですが、移動(margin-top 0px→500px)はなぜか非常に長い時間がかかってしまいます。(Chrome、Firefox、IE、Edgeにて確認)
これはなぜなのでしょうか。そして、animate
をduration
内で完了させるにはどうしたらよいでしょうか。
なお、普通に
html
1// コメントアウトする 2// $(this).animate({"marginTop": 500 * now + "px"}); 3 4// 追加する 5$("#box").animate({"marginTop": "500px"}, 6 {queue: false, duration: 5000} 7);
とすれば拡大と移動が同時に5秒でおこなわれますが、将来的により複雑な動きをさせたいので移動にもfunction(now)
を使いたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/10 14:27