Задать вопрос
@yagyar001

Как перетаскивать элемент мышкой, но чтобы следовал за мышкой именно той областью на которой был клик?

Всем привет. Сделал перетаскивание элемента мышкой, но как только кликаю элемент перемещается и цепляется к курсору левым верхним углом. А мне нужно, чтобы где кликнул той областью и перетаскивался. Как такое реализовать?
var listener = function (e) {

            full_info_div.style.left = e.clientX + "px";
            full_info_div.style.top = e.clientY + "px";
        };

        full_info_div.addEventListener('mousedown', e => {
            document.addEventListener('mousemove', listener);
            document.querySelector("html").setAttribute("style", "user-select: none");

        });

        full_info_div.addEventListener('mouseup', e => {
            document.removeEventListener('mousemove', listener);
            document.querySelector("html").removeAttribute("style");

        });
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@ksnk
У элемента есть крайне удобный метод getBoundingClientRect, который почти все проблемы позиционирования решает в меру элегантно.
var disp=[0,0]; // смещение
        var listener = function (e) {

            full_info_div.style.left = (disp[0]+e.clientX) + "px";
            full_info_div.style.top = (disp[1]+e.clientY) + "px";
        };

        full_info_div.addEventListener('mousedown', e => {
          let b = full_info_div.getBoundingClientRect();
          disp= [b.left-e.clientX,b.top-e.clientY];
          document.addEventListener('mousemove', listener);
           document.querySelector("html").setAttribute("style", "user-select: none");

        });
...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Вычислить разницу между координатами клика и позицией элемента, а во время движения мышки отнять её от текущей позиции курсора.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы