私は本質的にステートマシンとして記述されたCSS3/Javascript UIに取り組んでおり、状態間の遷移(アニメーション)は完全にCSS3アニメーションと遷移で行われます。
現在、状態変化をトリガーするために、次のようなことをしています。
function changeState(oldState, newState) {
element.classList.remove(getCSSClassName(oldState));
element.classList.add(getCSSClassName(newState));
}
これは今のところ問題ないようで、すべてがWebkitベースのブラウザーで機能するようです。要素のレンダリングは、これらのコマンドの両方が実行されるまで更新されません(おそらく、javascriptの実行が終了するまで何も行われません)。ただし、一部のブラウザ(特にFirefox)のレイアウト/レンダリングの変更は、JavaScriptの実行中に発生する可能性があることを私は知っています。
これは私がこれを行うべき方法ですか?または、CSSクラスの交換に関して「状態変化」をトリガーするより良い方法はありますか?