我試圖檢測兩個元素之間的碰撞,並且在使用css3 translate3d
而不是使用top
屬性時遇到問題。使用translate3d和jQuery延遲檢測碰撞
問題發生在:
- 鉻(35.0.1916.153米)
- 歌劇(22.0.1471.70)
當使用translate3d
有一個延遲檢測碰撞。我使用了setInterval
,時間間隔爲1毫秒,以確保幾乎實時監測這兩個元素的位置。
在我的例子中,當檢測到碰撞時,小方塊會變黑。正如你所看到的,延遲有時非常大,有時碰撞似乎在動畫完成時被檢測到。
修改top
屬性時正常工作:使用translate3d
,而不是當移動元素
http://jsfiddle.net/rHZbt/10/
延遲:
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);
}
}
任何有關此錯誤原因的想法?
哇,我真的沒想到它......謝謝了!它看起來像瀏覽器的黑客,但它的工作原理!謝謝! – Alvaro