このことは私を怒らせています!
HTMLページの別のdiv内にプログラムで絶対配置されたdivを作成します。外側の div はイベントに登録されmousedown
、touchstart
内側の div は css3 トランジションを使用して動き始めます。
すべての遷移が-WebKit-transform
プロパティに影響します。
イベント処理を除いて、すべて正常に動作します。Chrome と Safari では、すべてのイベントが外側の div イベント ハンドラーでキャッチされますが、イベントのターゲット プロパティが、クリックした div になることはめったにありません。
div が遷移を終了すると、イベント ターゲットは常に正しいものになりますが、div が遷移している間はそうではありません。これはバグですか?何か不足していますか?
アップデート:
次のサンプルは、Safari および Chrome と互換性があります。
問題を示すオンライン サンプルを次に示します: http://jsfiddle.net/qfn7F/4/
球体は画面の上部から生成され、画面の下部に向かって移動します。ユーザーが球をクリックすると (mousedown
イベント)、クリックされた球は画面から消える必要があります。
球体との相互作用を処理するコードは次のとおりです。
container.addEventListener(onSelect, function() {
if (event.target.classList.contains("transition")) {
var tDiv = event.target;
var box = tDiv.getBoundingClientRect();
var durationEase = "0.25s linear";
tDiv.style.pointerEvents = "none";
tDiv.style.webkitTransform = "translate3d(" + box.left + "px," + box.top + "px, 1px)";
tDiv.style.opacity = 0;
tDiv.style.webkitTransition = "opacity " + durationEase;
}
event.preventDefault();
event.stopPropagation();
}, false);
しかし、イベントのターゲットがユーザーがクリックした球体になることはめったにないため、球体が一貫した方法で画面から消えることはありません。
球体が画面の下部に到達すると、つまりトランジションが終了し、クリック イベントは 100% 機能します。