课程
/前端开发
/JavaScript
/JS动画效果
麻烦老师看下
2016-03-29
源自:JS动画效果 3-1
正在回答
因为px是没有小数的,-190.5浏览器会默认为-190,把小数省略掉,这是speed等于-200-(-190)/20为-0.5,然后又算出oDiv.style.left=-190+(-0.5)=-190.5,然后浏览器又会省略掉小数,使当前值为-190,然后又计算出speed为-0.5,陷入一个死循环,无法继续执行下去。
我不是老师,斗胆帮你解答一下。
在speed不取整的情况下,根据speed=(iTarget-oDiv.offsetLeft)/20和oDiv.style.left=oDiv.offsetLeft+speed这两句来分析。因为left和offsetLeft是没有小数点的,所以speed是多出来的小数即-0.5,当iTarget=0时,speed=-0.5,根据speed=(iTarget-oDiv.offsetLeft)/20推算出offsetLeft=-190。根据oDiv.style.left=oDiv.offsetLeft+speed推算出left=-190.5
举报
通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装
2 回答还是不明白为什么在没加判断语句之前,为什么他会停在-190.5的地方?不继续计算了吗?求指教!!!
1 回答为什么会停到8.55和190.5
2 回答如果浏览器不支持小数像素,var speed = (iTarget - oDiv.offsetLeft)/20;当speed等于20以下的时候,oDiv.style.left = oDiv.offsetLeft + speed +'px';这里的speed就小于1了。浏览器应该在20px左右的时候就停止了,为什么是在10px左右的时候停止呢
1 回答if(aa==iTarget){ //为什么这里用aa>=iTarget或是<=实现不了呢
2 回答为什么把速度放在外面就不行呢?每次每个对象startmove方法调用时应该会重新获取速度值才对晒