我正在尝试检测两个元素之间的冲突,并且在使用 css3translate3d
而不是使用该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);
}
}
关于这个错误的原因是什么的任何想法?