私は Stack Overflow が初めてで、HTML5 プログラミングも比較的初めてです。Webkit アニメーションの完了時に発生するイベントによってロジックが駆動される (主に Safari 用の) 何かを書いています。同じ長さの多数のアニメーションを同時に開始する場合、それらの完了イベントが発生すると予想される順序についてのアイデアが必要です。例:
<!DOCTYPE html>
<html>
<head>
<style>
@-webkit-keyframes slideRight {
from { left: 0; }
to { left: 100px; }
}
</style>
</head>
<body>
<script type="text/javascript">
var square = function(yPos, color){
var myDiv = document.createElement("div");
myDiv.style.width = "20px";
myDiv.style.height = "20px";
myDiv.style.top = yPos + "px";
myDiv.style.backgroundColor = color;
myDiv.style.position = "absolute";
document.body.appendChild(myDiv);
var squareInterface = {
onAnimEnd: function(event){
console.log(myDiv.style.backgroundColor + " square finished animating");
},
startAnim: function(){
myDiv.style.webkitAnimationName = "slideRight";
myDiv.style.webkitAnimationDuration = "2s";
myDiv.addEventListener('webkitAnimationEnd', this.onAnimEnd);
}
}
return squareInterface;
}
var myRedFoo = square(0, "red");
var myBlueFoo = square(30, "blue");
myRedFoo.startAnim();
myBlueFoo.startAnim();
</script>
</body>
</html>
そこで、JavaScript で赤い四角と青い四角を作成し、(Safari と Chrome で) アニメーションを開始して右に移動し、完了したらコンソールに出力します。青い四角は、アニメーションが終了したことを常に最初に示します。遊んでみると、アニメーションが開始された順序や正方形の位置とは関係がないように見えますが、それらが作成された順序です。「同時」イベント コールバックは、最も最近作成された要素で最初に発生し、その後に古い要素が続くようです。
私の質問は、この動作に頼ることができますか? 何かの規格で保証されているのですか、それともブラウザや月の満ち欠けによって変わる可能性はありますか? イベントの順序を保証できない場合、それに対処するためにどのような戦略をお勧めしますか?