Я делаю игру, которая включает в себя щелчок и перетаскивание с помощью jQuery. Когда вы нажимаете внутри игры div (красный), появляется черный блок, который можно перетаскивать. Я сделал скрипку здесь:jQuery mousemove с переходами CSS
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');
}
Почему задержка? Попытка понять, поэтому я вижу, есть ли хороший альтернативный способ сделать это. Это определенно ваш переход. –
Если вы измените свой переход на 10 мс, это будет гораздо более гладко –
@AlainNisam Задержка не нужна, мне просто интересно, почему это происходит. Для меня даже переход 1 мс становится очень нервным после нажатия зеленой коробки. – McScott