为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会停到8.55和190.5

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

但是8.55是怎么来的?

正在回答

1 回答

从-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,不满一个像素,所以停止

只保留前两位小数

0 回复 有任何疑惑可以回复我~
#1

fortunate蚂蚁 提问者

多谢解答
2018-12-13 回复 有任何疑惑可以回复我~
#2

fortunate蚂蚁 提问者

你好,我仔细算了下,8.55的前一次,也就是倒数第二次是9.5.除20的话是0.475,为什么没有停呢?如果以不满1px为标准的话,按说在-20px的时候已经停了。望指点迷津
2018-12-15 回复 有任何疑惑可以回复我~
#3

fortunate蚂蚁 提问者 回复 fortunate蚂蚁 提问者

不好意思,翻前面评论找到答案了。原因是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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么会停到8.55和190.5

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信