Элемент: событие mouseleave
Базовая Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Событие mouseleave генерируется для элемента Element, когда курсор указательного устройства (обычно мыши) перемещается за его пределы.
mouseleave и mouseout похожи, но отличаются тем, что mouseleave не распространяется, а mouseout распространяется. Это означает, что mouseleave срабатывает, когда указатель вышел за пределы элемента и всех его потомков, в то время как mouseout срабатывает, когда указатель покидает элемент или один из потомков элемента (даже если указатель все ещё находится внутри элемента).
События mouseleave и mouseout не будут сгенерированы, если элемент будет заменён или удалён из DOM.
Обратите внимание, что «выход за пределы элемента» относится к положению элемента в дереве DOM, а не к его визуальному положению. Например, если два соседних элемента расположены так, что один находится внутри другого, то перемещение из внешнего элемента во внутренний элемент вызовет событие mouseleave на внешнем элементе, даже если указатель все еще находится в пределах границ внешнего элемента.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("mouseleave", (event) => {});
onmouseleave = (event) => {};
Тип события
Объект MouseEvent. Наследуется от UIEvent и Event.
Свойства события
Этот интерфейс также наследует свойства своих родительских элементов, UIEvent и Event.
-
MouseEvent.altKeyТолько для чтения -
Возвращает
true, если клавиша alt была нажата во время генерации события мыши. -
Номер нажатой кнопки (если применимо) во время генерации события мыши.
-
Нажатые кнопки (если есть) во время генерации события мыши.
-
MouseEvent.clientXТолько для чтения -
Координата X указателя мыши в координатах viewport.
-
MouseEvent.clientYТолько для чтения -
Координата Y указателя мыши в координатах viewport.
-
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.
Поведение событий mouseleave
Одно событие mouseleave отправляется каждому элементу иерархии при выходе из него. Здесь четыре события отправляются четырём элементам иерархии, когда указатель перемещается из текста в область за пределами самого внешнего div, представленного здесь.
Поведение событий mouseout
Одно событие mouseout отправляется самому глубокому элементу дерева DOM, а затем распространяется вверх по иерархии до тех пор, пока не будет отменено обработчиком или не достигнет корня.
Примеры
В документации mouseout приведён пример, иллюстрирующий разницу между mouseout и mouseleave.
mouseleave
В следующем тривиальном примере используется событие mouseenter для изменения границы на <div> при наведении курсора на отведённое для него место. Затем добавляется элемент в список с номером события mouseenter или mouseleave.
HTML
<div id="mouseTarget">
<ul id="unorderedList">
<li>No events yet!</li>
</ul>
</div>
CSS
Стиль <div> для повышения его видимости.
#mouseTarget {
box-sizing: border-box;
width: 15rem;
border: 1px solid #333;
}
JavaScript
let enterEventCount = 0;
let leaveEventCount = 0;
const mouseTarget = document.getElementById("mouseTarget");
const unorderedList = document.getElementById("unorderedList");
mouseTarget.addEventListener("mouseenter", (e) => {
mouseTarget.style.border = "5px dotted orange";
enterEventCount++;
addListItem(`This is mouseenter event ${enterEventCount}.`);
});
mouseTarget.addEventListener("mouseleave", (e) => {
mouseTarget.style.border = "1px solid #333";
leaveEventCount++;
addListItem(`This is mouseleave event ${leaveEventCount}.`);
});
function addListItem(text) {
// Create a new text node using the supplied text
const newTextNode = document.createTextNode(text);
// Create a new li element
const newListItem = document.createElement("li");
// Add the text node to the li element
newListItem.appendChild(newTextNode);
// Add the newly created list item to list
unorderedList.appendChild(newListItem);
}
Результат
Спецификации
| Спецификация |
|---|
| События пользовательского интерфейса # event-type-mouseleave |
| HTML # handler-onmouseleave |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
mouseleave_event |
30 | 12 | 10 | 17 | 7 | 30 | 10 | 18 | 7 | 2.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/mouseleave_event