Как ограничить область перемещения элемента при событии mousemove?

Есть блок, внутри которого расположен элемент, который можно перемещать с помощью события mousemove. Как сделать так, чтобы я не мог перемещать его за пределы красных линий по оси Y и за пределы блока по оси X?
  • Вопрос задан
  • 1289 просмотров
Решения вопроса 2
rockfeeler
@rockfeeler
Фронтендер, дизайнер, верстальщик-перфекционист
Позицию объекта мы знаем. Нужно вычислить позицию линий.
Проверять позицию верха и низа объекта относительно позиции линий.
Если верх объекта больше или равен позиции верхней линии, задаем объекту жестко позицию сверху равную позиции верхней линии.
Если низ объекта больше или равен позиции нижний линии, задаем объекту жестко позицию сверху равную позиции нижний линии минус высота объекта.
Слева и справа те же действия, только по оси x.

Кусочек кода для первого условия:

if (element.offsetTop - offset.y + 'px' <= позицияВерхнейЛинии + 'px') {
    element.style.top = позицияВерхнейЛинии + 'px'
}
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Нужно посчитать границы области, где можно перемещаться. Это будут минимумы и максимумы координат. Ну и размеры элемента тоже понадобятся.

Далее в коде в том месте, где вы меняете координаты, делать соответствующий сравнения. Типа такого:
if (x > max_x - obj_width) x = max_x - obj_width;
if (x < min_x) x = min_x;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы