Как увеличить скорость перемещения div
Как увеличить скорость перемещения div или сделать так что когда удерживаешь его левой кнопкой мыши он не уходил за курсор и не переставал двигаться. Надеюсь понятно объяснил ну я думаю как вы посмотрите поймете о чем я. Вот код КОД
Ответы (1 шт):
Автор решения: Трипольский Пётр
→ Ссылка
Есть такой сайт, https://yolo-mark-pwa.github.io/. Что он делает вам не принципиально, важно, что там поверх картинок можно квадраты размещать и двигать
Если вы начинающий разработчик, перед тем как ставить из npm готовое решение, попробуйте один раз написать самостоятельно
Код сайта размещен тут. Вас интересует функция dragHandler из файла area-selector.ts на 252 строке. Думаю, можно чуть упростить
let [x1, y1] = [0, 0]; // позиция мыши относительно родительского блока
let [TOP, LEFT] = [0, 0]; // отступ сверху и слева для перемещаемого прямоугольника
let [HEIGHT, WIDTH] = [0, 0]; // ширина и высота перемещаемого прямоугольника
const dragHandler = ({ pageX, pageY }) => {
// Смещение позиции относительно прокрутки страницы
const {scrollX, scrollY} = window;
pageX -= scrollX;
pageY -= scrollY;
{
// Смещение позиции относительно родительского элемента
const { top, left } = parentElement.getBoundingClientRect();
[x1, y1] = [Math.max(pageX - left, 0), Math.max(pageY - top, 0)];
}
// делаем перетягивание прямоугольника по геометрическому центру
const [top, left] = [Math.max(y1 - (HEIGHT / 2), 0), Math.max(x1 - (WIDTH / 2), 0)];
const { height, width } = parentElement.getBoundingClientRect();
// не даем прямоугольнику уехать за границы
TOP = top + HEIGHT > height ? TOP : top;
LEFT = left + WIDTH > width ? LEFT : left;
}
