translate3d
2 つの要素間の衝突を検出しようとしていますが、プロパティを使用する代わりにcss3 を使用すると問題に直面していtop
ます。
問題は次の場所で発生します。
- クロム (35.0.1916.153 m)
- オペラ (22.0.1471.70)
使用translate3d
すると、衝突を検出するのに遅延があります。setInterval
両方の要素の位置がほぼリアルタイムで監視されていることを確認するために、1 ミリ秒の経過で使用しています。
私の例では、衝突が検出されると小さな四角が黒くなります。ご覧のとおり、遅延が非常に大きい場合があり、アニメーションが終了したときに衝突が検出されたように見える場合があります。
プロパティを変更すると正しく動作しtop
ます:
http://jsfiddle.net/rHZbt/10/
translate3d
要素を移動する代わりに使用する場合の遅延:
http://jsfiddle.net/rHZbt/9/
これは、jQuery との衝突を検出する方法です。
var interval = setInterval(function () {
checkCollision();
}, 1);
function checkCollision() {
var top = $('#element').offset().top;
var bigBoxTop = $('#demo').offset().top + $('#demo').height();
if (bigBoxTop >= top) {
$('#element').css('background', 'black');
clearInterval(interval);
}
}
このバグの原因について何か考えはありますか?