Элемент: событие mousemove
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Событие mousemove срабатывает на элементе, когда указательное устройство (обычно мышь) перемещается, а курсор находится внутри него.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика события.
addEventListener("mousemove", (event) => {});
onmousemove = (event) => {};
Тип события
A MouseEvent. Наследует от UIEvent и Event.
Свойства события
Этот интерфейс также наследует свойства своих родительских элементов, UIEvent и Event.
-
MouseEvent.altKeyТолько для чтения -
Возвращает
trueесли клавиша alt была нажата во время срабатывания события мыши. -
Номер нажатой кнопки (если применимо) во время срабатывания события мыши.
-
Кнопки, нажатые (если есть) во время срабатывания события мыши.
-
MouseEvent.clientXТолько для чтения -
Координата X указателя мыши в координатах области просмотра.
-
MouseEvent.clientYТолько для чтения -
Координата Y указателя мыши в координатах области просмотра.
-
MouseEvent.ctrlKeyТолько для чтения -
Возвращает
trueесли клавиша control была нажата во время срабатывания события мыши. -
MouseEvent.layerXНестандартный Только для чтения -
Возвращает горизонтальную координату события относительно текущего слоя.
-
MouseEvent.layerYНестандартный Только для чтения -
Возвращает вертикальную координату события относительно текущего слоя.
-
MouseEvent.metaKeyТолько для чтения -
Возвращает
trueесли клавиша meta была нажата во время срабатывания события мыши. -
MouseEvent.movementXТолько для чтения -
Координата X указателя мыши относительно положения последнего события
mousemove. -
MouseEvent.movementYТолько для чтения -
Координата Y указателя мыши относительно положения последнего события
mousemove. -
MouseEvent.offsetXТолько для чтения -
Координата X указателя мыши относительно положения поля отступа целевого узла.
-
MouseEvent.offsetYТолько для чтения -
Координата Y указателя мыши относительно положения поля отступа целевого узла.
-
MouseEvent.pageXТолько для чтения -
Координата X указателя мыши относительно всего документа.
-
MouseEvent.pageYТолько для чтения -
Координата Y указателя мыши относительно всего документа.
-
Второстепенная цель для события, если она есть.
-
MouseEvent.screenXТолько для чтения -
Координата X указателя мыши в координатах экрана.
-
MouseEvent.screenYТолько для чтения -
Координата Y указателя мыши в координатах экрана.
-
MouseEvent.shiftKeyТолько для чтения -
Возвращает
trueесли клавиша shift была нажата во время срабатывания события мыши. -
MouseEvent.mozInputSourceНестандартный Только для чтения -
Тип устройства, сгенерировавшего событие (одно из
MOZ_SOURCE_*констант). Это позволяет, например, определить, было ли событие мыши сгенерировано фактической мышью или событием касания (что может повлиять на точность интерпретации координат, связанных с событием). -
MouseEvent.webkitForceНестандартный Только для чтения -
Сила нажатия при щелчке.
-
MouseEvent.xТолько для чтения -
Псевдоним для
MouseEvent.clientX. -
MouseEvent.yТолько для чтения -
Псевдоним для
MouseEvent.clientY.
Примеры
Следующий пример использует события mousedown, mousemove, и mouseup для того, чтобы позволить пользователю рисовать на HTML-элементе canvas. Его функциональность проста: толщина линии установлена в 1, а цвет всегда черный.
При загрузке страницы создаются константы myPics и context для хранения ссылки на холст и 2d контекст, которые мы будем использовать для рисования.
Рисование начинается при срабатывании события mousedown. Сначала мы сохраняем координаты x и y указателя мыши в переменные x и y, а затем устанавливаем isDrawing в true.
По мере перемещения мыши по странице срабатывает событие mousemove. Если isDrawing равно true, обработчик событий вызывает функцию drawLine для рисования линии от сохранённых значений x и y до текущего положения.
После возвращения функции drawLine() мы корректируем координаты и сохраняем их в x и y.
Событие mouseup рисует последний отрезок линии, устанавливает x и y в 0, и останавливает дальнейшее рисование, установив isDrawing в false.
HTML
<h1>Drawing with mouse events</h1> <canvas id="myPics" width="560" height="360"></canvas>
CSS
canvas {
border: 1px solid black;
width: 560px;
height: 360px;
}
JavaScript
// When true, moving the mouse draws on the canvas
let isDrawing = false;
let x = 0;
let y = 0;
const myPics = document.getElementById("myPics");
const context = myPics.getContext("2d");
// event.offsetX, event.offsetY gives the (x,y) offset from the edge of the canvas.
// Add the event listeners for mousedown, mousemove, and mouseup
myPics.addEventListener("mousedown", (e) => {
x = e.offsetX;
y = e.offsetY;
isDrawing = true;
});
myPics.addEventListener("mousemove", (e) => {
if (isDrawing) {
drawLine(context, x, y, e.offsetX, e.offsetY);
x = e.offsetX;
y = e.offsetY;
}
});
window.addEventListener("mouseup", (e) => {
if (isDrawing) {
drawLine(context, x, y, e.offsetX, e.offsetY);
x = 0;
y = 0;
isDrawing = false;
}
});
function drawLine(context, x1, y1, x2, y2) {
context.beginPath();
context.strokeStyle = "black";
context.lineWidth = 1;
context.moveTo(x1, y1);
context.lineTo(x2, y2);
context.stroke();
context.closePath();
}
Результат
Спецификации
Совместимость с браузерами
| Десктоп | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
mousemove_event |
2 | 12 | 6 | 11.6 | 4 | 18 | 6 | 12.1 | 3.2 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event