私のコードはここにあります。3つの位置があります:zero(0,0)
、、、。end(200,200)
random(0,200)
divはrandom(0,200)
最初の位置にあります。
したい :
手順1)divを位置に設定し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' ;
className = 'pos_zero'
css style( )がまだ完全に適用されていないのに、移行の開始が早すぎるようです。random
位置から位置に直接移動しend
ます。そして、私が本当に望んでいるのは、からではなく、位置end
から配置するアニメーションです。zero
random
このようなコードは機能します:
document.getElementById('x').className = 'pos_zero'; // set the div to the position zero(0,0)
setTimeout('move()',1);
このコードは、timeout
関数を使用して正常に実行されます。このコードは、pos_zero
最初にdivをその位置に設定し、次に関数によって非同期に遷移し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();
みんなありがとう。そして、私が混乱させてすみません。