【发布时间】:2014-08-22 00:13:27
【问题描述】:
我正在尝试检测两个元素之间的冲突,但在使用 css3 translate3d 而不是使用 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);
}
}
你知道这个错误的原因是什么吗?
【问题讨论】:
标签: jquery css google-chrome translate3d jquery-1.10