不懂为什么(itarget-odiv.offsetLeft)/20 之后left就回不到200或者-200了。。。。

来源:3-1 JS缓冲动画

其实TAMA酱不是我名字

2016-04-09 22:28

var speed = (itarget-odiv.offsetLeft)/20;

speed = speed>0?Math.ceil(speed):Math.floor(speed);

if(oDiv.offsetLeft ==iTarget){

   clearInterval(timer);

}

else{

oDiv.style.left = oDiv.offsetLeft+speed+'px';

}

写回答 关注

3回答

  • 路漫漫兮2015
    2016-04-10 10:06:16
    已采纳

    当(itarget-odiv.offsetLeft)/20=10/20=0.5PX时,oDiv.style.left = oDiv.offsetLeft+speed+'px';=190+0.5=190.5px,像素出现了小数程序无法执行下去。


    小西瓜籽

    执行一次后 offsetLeft=-190 那 190/20=9.5 也不是整数 不加下面取整代码时,程序一直执行到offsetLeft=-10时才不能执行是为什么,求解答

    2016-06-23 17:40:24

    共 5 条回复 >

  • qq_Pal_0
    2016-04-18 00:13:18

    就是因为那个offsetLeft属性的值是不能带小数的。所以要想办法用Math的方法把speed变成整数,这样才能把offsetLeft弄成整数.

  • 慕田峪8115978
    2016-04-10 10:09:33

    请检查你的样式表里面有没有加border,offsetLift获取的左值+边框的值

JS动画效果

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

113925 学习 · 1443 问题

查看课程

相似问题