我正在做一個遊戲,涉及使用jQuery的點擊和拖動。當您點擊遊戲div(紅色)時,會出現一個黑色塊,您可以拖動。我做了一個小提琴,在這裏:jQuery與CSS轉換mousemove
https://jsfiddle.net/r9pet266/6/
我想要的鼠標移動和塊移動之間有輕微的延遲,所以我加了塊上的CSS屬性過渡。
只要您點擊並拖動遊戲div內的內容,該動作看起來很流暢,但一旦您在遊戲div外單擊並在內部點擊並拖動,就會變得非常激動。
有人知道爲什麼嗎?
HTML
<div id="outer">
<div id="game"></div>
<div id="instructions">
1. Click and drag inside the red box --> smooth <br>
2. Click on the green <br>
3. Click and drag inside the red box --> jumpy
</div>
</div>
CSS
#outer {
height: 500px;
background: green;
}
#instructions {
position: absolute;
top: 350px;
left: 100px;
}
#game {
position: relative;
display: inline-block;
width: 300px;
height: 270px;
background: red;
}
.block {
transition: 100ms;
position: absolute;
width: 80px;
height: 80px;
background: black;
}
的JavaScript:
var $block;
$('#game').mousedown(function (e) {
e.preventDefault();
$block = $('<div>');
$block.addClass('block');
updatePosition(e);
$('#game').append($block);
$('#game').mousemove(updatePosition);
$(window).one('mouseup', function() {
$block.remove();
$('#game').off('mousemove');
});
});
function updatePosition (e) {
$block.css('top', e.pageY - 45 + 'px');
$block.css('left', e.pageX - 45 + 'px');
}
爲什麼延誤?試着去理解,這樣我就可以看到是否有一種很好的替代方法。這絕對是你的過渡。 –
如果你改變你的過渡到10ms它會更平滑 –
@AlainNisam延遲是沒有必要的,我只是好奇爲什麼會發生這種情況。對我來說,點擊綠框後,即使1ms的過渡也會變得非常激動。 – McScott