Я построил небольшой прототип для элемента пользовательского интерфейса с функцией сопротивления, и он работает, но перетаскивание со средней+ скоростью приводит к тому, что перетащенный элемент становится довольно заметно искаженным вдоль оси сопротивления. При медленном перетаскивании этого не происходит. Кто -нибудь знает, почему это происходит здесь, и если возможно это предотвратить? Или у кого -нибудь нет этой проблемы, может быть? Я попробовал Googling, но я не смог произвести подсказку, которая дала бы мне ответ. : //jsbin.com/lovoqulewa/2/edit? html, css, js, консоль, вывод
Красный дивинг можно перетаскивать в синий div, нажав, а затем перетаскивая мышь без отпускания, как общие элементы перетаскивания. /p>
Код: Выделить всё
function slide(e) {
movy.style.left = Math.max(0,Math.min((e.clientX-offset[0]), (bounds[2]-cSize[0])))+'px';
movy.style.top = Math.max(0,Math.min((e.clientY-offset[1]), (bounds[3]-cSize[1])))+'px';
}
< /code>
slide(e)
вызывается из OnmouseMove. Является ли настройка слева / верхняя часть события движения мыши является проблемой для рендеринга? Я также попытался обернуть его в requestAnimationFrame () , как следует, но это не помогло.
Код: Выделить всё
function slide(e) {
requestAnimationFrame(function() {
movy.style.left = Math.max(0,Math.min((e.clientX-offset[0]), (bounds[2]-cSize[0])))+'px';
movy.style.top = Math.max(0,Math.min((e.clientY-offset[1]), (bounds[3]-cSize[1])))+'px';
});
}
< /code>
I'm not familiar with the inner workings of requestAnimationFrame
вообще, я просто знаю, что это иногда помогает с аналогичными эффектами при выполнении анимации Canvas.
Подробнее здесь:
https://stackoverflow.com/questions/794 ... -higher-dr