課程
/前端開發
/JavaScript
/JS動畫效果
想知道為什么速度沒有向下、向上取整時,不會完全移出、移入啊?
2017-02-04
源自:JS動畫效果 3-1
正在回答
假設-200 ?》 0的過程,
speed = (?iTarget ?- oDiv.offsetLeft )/20
隨著移動的過程,oDiv.offsetLeft 值會越來越大,-200 ? ... ?-100 ?.. ? -50 ?.. ?-20 ? ?... ?-10
對應的值speed就越來越小,200/20 ?100/20 ? 50/20 ?20/20 ? 10/20 ? 5/20
很明顯,后面的值是0<speed<1的 ? 而且speed越來越小,
所以在oDiv.style.left = oDiv.offsetLeft + speed +"px"; ?中就無法達到目標值,
所以采取向上取整的形式把speed=0.*的情況都取值為1,
我的理解是 speed 沒有取整時,當 oDiv.offsetLeft 越來越接近 iTarget , 由?speed = ( target - oDiv.offsetLeft)/20 可以看出 speed 的值會趨向于無窮小,沒有了速度,也就不會完全移入移出。不過如果是這樣的話,speed的值取不到0,div1就不會停止移動,只會無限逼近目標距離,這樣顯然是不可能的。評論里有人說這里瀏覽器會采取四舍六入五成雙的方式自動取整,雖然不懂是怎么取整的,但只要能夠取整,speed 的值就能取到0,也就可以停下來了。
微笑向陽安之若素 提問者
? speed = (iTarget - icur) / 20;
? ? ? ? speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
我的理解是速度沒有向上向下去取整時,speed將會帶有小數,
obj.style[attr] = icur + speed + 'px';當attr為width時,就會執行這句話,然后會把當時的值賦值給它。然后因為每隔一定的事件會刷新一次,然后會重新執行上訴過程 ,導致width值變大,最后就會導致不會完全移出、移入。
舉報
通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝
1 回答求大神指點
1 回答求大神解答一下
1 回答求大神幫忙看看
2 回答求大神幫忙看看
1 回答求大神進來看看
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-24
假設-200 ?》 0的過程,
speed = (?iTarget ?- oDiv.offsetLeft )/20
隨著移動的過程,oDiv.offsetLeft 值會越來越大,-200 ? ... ?-100 ?.. ? -50 ?.. ?-20 ? ?... ?-10
對應的值speed就越來越小,200/20 ?100/20 ? 50/20 ?20/20 ? 10/20 ? 5/20
很明顯,后面的值是0<speed<1的 ? 而且speed越來越小,
所以在
oDiv.style.left = oDiv.offsetLeft + speed +"px"; ?中就無法達到目標值,
所以采取向上取整的形式把speed=0.*的情況都取值為1,
2017-02-20
我的理解是 speed 沒有取整時,當 oDiv.offsetLeft 越來越接近 iTarget , 由?speed = ( target - oDiv.offsetLeft)/20 可以看出 speed 的值會趨向于無窮小,沒有了速度,也就不會完全移入移出。不過如果是這樣的話,speed的值取不到0,div1就不會停止移動,只會無限逼近目標距離,這樣顯然是不可能的。評論里有人說這里瀏覽器會采取四舍六入五成雙的方式自動取整,雖然不懂是怎么取整的,但只要能夠取整,speed 的值就能取到0,也就可以停下來了。
2017-02-04
? speed = (iTarget - icur) / 20;
? ? ? ? speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
我的理解是速度沒有向上向下去取整時,speed將會帶有小數,
obj.style[attr] = icur + speed + 'px';當attr為width時,就會執行這句話,然后會把當時的值賦值給它。然后因為每隔一定的事件會刷新一次,然后會重新執行上訴過程 ,導致width值變大,最后就會導致不會完全移出、移入。