> Как определить, что мышь находится над контейнером модального окна при перетаскивании? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Cyber Interactive

Стек: JavaScript

> Пример ответа

Для определения, находится ли мышь над контейнером модального окна при перетаскивании, можно использовать метод element.getBoundingClientRect() и отслеживать события mousemove. Вот пример реализации:

JAVASCRIPT
const modalContainer = document.querySelector('.modal-container');
let isDragging = false;
// При начале перетаскивания
modalContainer.addEventListener('mousedown', (e) => {
isDragging = true;
});
// При движении мыши
document.addEventListener('mousemove', (e) => {
if (!isDragging) return;
const rect = modalContainer.getBoundingClientRect();
const isOverModal =
e.clientX >= rect.left &&
e.clientX <= rect.right &&
e.clientY >= rect.top &&
e.clientY <= rect.bottom;
if (isOverModal) {
console.log('Мышь над модальным окном');
// Дополнительная логика, например, изменение курсора
} else {
console.log('Мышь вне модального окна');
}
});
// При завершении перетаскивания
document.addEventListener('mouseup', () => {
isDragging = false;
});

Ключевые моменты:

  • Используйте getBoundingClientRect() для получения актуальных координат контейнера (учитывает скролл и трансформации).
  • Сравнивайте clientX/clientY события мыши с границами прямоугольника.
  • Обрабатывайте события на document, чтобы отслеживать движение даже за пределами окна.
  • Для повышения производительности можно добавить debounce или throttle на mousemove.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью