我的代码在这里。共有三个位置:zero(0,0)
, end(200,200)
, random(0,200)
。
一个 div 位于random(0,200)
开头的位置。
我想要 :
步骤 1) 将 div 设置在 position 中zero(0,0)
。这一步没有动画
步骤2)通过过渡将其从一个位置移动zero
到另一个位置。end
这一步有动画
像这样的代码不能很好地工作:
document.getElementById('x').className = 'pos_zero'; // set the div to the position zero(0,0)
move();
// in function move:
// document.getElementById('x').className = ' trans';
// document.getElementById('x').className += ' pos_end' ;
似乎过渡开始得太早了,而 css style( className = 'pos_zero'
) 还没有完全应用。它只是直接从一个位置移动到另一个random
位置end
。而我真正想要的是end
从 position 定位的动画zero
,而不是 from random
。
像这样的代码有效:
document.getElementById('x').className = 'pos_zero'; // set the div to the position zero(0,0)
setTimeout('move()',1);
此代码通过使用timeout
函数成功完成。此代码首先将 div 设置在位置pos_zero
,然后通过timeout
函数进行异步转换。而且timeout
功能似乎不是很专业。
所以,我正在寻找更专业的解决方案。
顺便一提。我想知道。是否有任何方法可以确保完全应用样式,例如“Style.flush()”之类的?
@Inerdial 它确实有效!非常感谢。要强制更新(强制立即同步重排或重新布局),您的 javascript 应该读取受更改影响的属性,例如 someSpan 和 otherSpan 的位置。` 新代码无需超时即可工作。
document.getElementById('x').className = 'pos_zero';
var tmp = document.getElementById('x').offsetTop; // read a property to force an update.
move();
谢谢大家。并对我造成的混乱感到抱歉。