亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求教大神 !??!

想知道為什么速度沒有向下、向上取整時,不會完全移出、移入啊?

正在回答

3 回答

假設-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,

1 回復 有任何疑惑可以回復我~

我的理解是 speed 沒有取整時,當 oDiv.offsetLeft 越來越接近 iTarget , 由?speed = ( target - oDiv.offsetLeft)/20 可以看出 speed 的值會趨向于無窮小,沒有了速度,也就不會完全移入移出。不過如果是這樣的話,speed的值取不到0,div1就不會停止移動,只會無限逼近目標距離,這樣顯然是不可能的。評論里有人說這里瀏覽器會采取四舍六入五成雙的方式自動取整,雖然不懂是怎么取整的,但只要能夠取整,speed 的值就能取到0,也就可以停下來了。

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

微笑向陽安之若素 提問者

謝謝(≧ω≦)/
2017-02-23 回復 有任何疑惑可以回復我~
#2

微笑向陽安之若素 提問者

謝謝(≧ω≦)/
2017-02-23 回復 有任何疑惑可以回復我~

? speed = (iTarget - icur) / 20;

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

我的理解是速度沒有向上向下去取整時,speed將會帶有小數,

obj.style[attr] = icur + speed + 'px';當attr為width時,就會執行這句話,然后會把當時的值賦值給它。然后因為每隔一定的事件會刷新一次,然后會重新執行上訴過程 ,導致width值變大,最后就會導致不會完全移出、移入。

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

微笑向陽安之若素 提問者

…… 沒聽懂 不過謝謝你。
2017-02-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JS動畫效果
  • 參與學習       113916    人
  • 解答問題       1502    個

通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝

進入課程

求教大神 ?。?!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號