为什么会停到8.55和190.5

来源:3-1 JS缓冲动画

fortunate蚂蚁

2018-12-10 16:07

如果是因为像素自动四舍五入的话,190.5可以理解。10/20=0.5   9.5/20=0.475(为0),所以停住。

但是8.55是怎么来的?

写回答 关注

1回答

  • 咳咳九思
    2018-12-11 20:23:24
    已采纳

    从-200到0的第一次运动是:目标值减去元素的left/20 就是(0--200)/20。向目标值移动了10;

    第二次是(0--190)/20。再次移动了9.5;

    第三次是(0--180.5)/20.移动了9.025

    第四次(0--171.475)/20.移动了8.57375;

    第五次(0--162.901625)/20 .移动8.14508125;

    。。。。。

    第N次(0--8.5523424223)/20.结果是0.4332312315,不满一个像素,所以停止

    只保留前两位小数

    fortun... 回复fortun...

    不好意思,翻前面评论找到答案了。原因是offsetLeft会round()取整。停在-190.5是因为offsetLeft取值时把-190.5取为-190。speed=(-200-(-190))/20=-0.5;最后div1.offsetLeft+speed+'px'一直等于-190.5。-8.55同理。

    2018-12-15 13:14:39

    共 3 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题