求教大神 ?。?!
想知道為什么速度沒有向下、向上取整時(shí),不會完全移出、移入?。?br />
想知道為什么速度沒有向下、向上取整時(shí),不會完全移出、移入?。?br />
2017-02-04
我的理解是 speed 沒有取整時(shí),當(dāng) oDiv.offsetLeft 越來越接近 iTarget , 由?speed = ( target - oDiv.offsetLeft)/20 可以看出 speed 的值會趨向于無窮小,沒有了速度,也就不會完全移入移出。不過如果是這樣的話,speed的值取不到0,div1就不會停止移動,只會無限逼近目標(biāo)距離,這樣顯然是不可能的。評論里有人說這里瀏覽器會采取四舍六入五成雙的方式自動取整,雖然不懂是怎么取整的,但只要能夠取整,speed 的值就能取到0,也就可以停下來了。
? speed = (iTarget - icur) / 20;
? ? ? ? speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
我的理解是速度沒有向上向下去取整時(shí),speed將會帶有小數(shù),
obj.style[attr] = icur + speed + 'px';當(dāng)attr為width時(shí),就會執(zhí)行這句話,然后會把當(dāng)時(shí)的值賦值給它。然后因?yàn)槊扛粢欢ǖ氖录⑿乱淮?,然后會重新?zhí)行上訴過程 ,導(dǎo)致width值變大,最后就會導(dǎo)致不會完全移出、移入。
舉報(bào)
2017-02-24
假設(shè)-200 ?》 0的過程,
speed = (?iTarget ?- oDiv.offsetLeft )/20
隨著移動的過程,oDiv.offsetLeft 值會越來越大,-200 ? ... ?-100 ?.. ? -50 ?.. ?-20 ? ?... ?-10
對應(yīng)的值speed就越來越小,200/20 ?100/20 ? 50/20 ?20/20 ? 10/20 ? 5/20
很明顯,后面的值是0<speed<1的 ? 而且speed越來越小,
所以在
oDiv.style.left = oDiv.offsetLeft + speed +"px"; ?中就無法達(dá)到目標(biāo)值,
所以采取向上取整的形式把speed=0.*的情況都取值為1,