[問題] JS 改用marginLeft後的速度變化

作者: elsa0116 (Fly*晴子)   2014-06-05 14:17:02
這兩天開始初碰javascript,
寫了一個小DIV在大DIV中跑的程式,
原本依照老師的用法有設相對跟絕對位置,(←有很順利的跑)
後來改用marginLeft跟marginTop後,
居然出現了奇妙的速度變化....
想問下板上各位先進這是為什麼.....囧
作者: mmis1000 (秋月戀楓)   2014-06-05 16:55:00
因為offset是對window的位移,不是對父元素
作者: elsa0116 (Fly*晴子)   2014-06-05 17:05:00
但是計時器不是有設定時間嗎??為什麼會造成中間速度不一?
作者: mmis1000 (秋月戀楓)   2014-06-05 17:08:00
因為left跟top每次算時都多出來了啊?所以前後後退的距離不一樣更正,應該是對 HTMLElement.offsetParent 的位移
作者: elsa0116 (Fly*晴子)   2014-06-05 17:50:00
所以只要小DIV設絕對就不會突然慢下了,就是這原因嗎@@?
作者: mmis1000 (秋月戀楓)   2014-06-05 18:12:00
^ 看不懂你打啥@@
作者: elsa0116 (Fly*晴子)   2014-06-05 23:03:00
就是後來我小DIV(id=bb)的樣式多設絕對位置,他就有正常跑了@@ 沒設的話會跑到一半突然慢下
作者: mmis1000 (秋月戀楓)   2014-06-05 23:20:00
建議你先去w3cschool把box model跟position那兩章看完因為絕對位置的定位是相對於,對最接近自身之定位元素而此例中他上面都沒有定位元素,因此最接近的預設為body不過做動畫根本沒必要用offsetTop,直接用變數存上次的位置就好了http://jsbin.com/hudivibo/1/edit#html,output
作者: elsa0116 (Fly*晴子)   2014-06-06 00:19:00
好QQQQ謝謝您!!!!!我再多研究看看!!非常感謝!!

Links booklink

Contact Us: admin [ a t ] ucptt.com