Кратко
СкопированоСобытие на HTML-элементе. Происходит, когда пользователь передвигает курсор на сам элемент или на вложенные элементы.
На события можно подписаться и выполнять JavaScript-код, когда событие произошло.
Событие является противоположным событию mouseout
. Эти события часто используются в паре.
Как пишется
Скопированоconst divEl = document.getElementsByTagName('div')[0]divEl.addEventListener('mouseover', function () { alert('курсор вошел в границы элемента!')})
const divEl = document.getElementsByTagName('div')[0] divEl.addEventListener('mouseover', function () { alert('курсор вошел в границы элемента!') })
Как понять
СкопированоПодробнее о механизме событий читай в статье «События».
Событие проще всего понять на демо. При событии mouseover
мы устанавливаем элементу, на котором произошло событие, синий фоновый цвет:
let current = undefinedfunction onMouseover() { if (current) { current.classList.remove('mouseover') } this.classList.add('mouseover') current = this // Записываем текущий пункт, // чтобы удалить с него класс // при переходе курсора на новый элемент}const items = document.getElementsByTagName('li')for (let i = 0; i < items.length; ++i) { const item = items[i] item.addEventListener('mouseover', onMouseover)}
let current = undefined function onMouseover() { if (current) { current.classList.remove('mouseover') } this.classList.add('mouseover') current = this // Записываем текущий пункт, // чтобы удалить с него класс // при переходе курсора на новый элемент } const items = document.getElementsByTagName('li') for (let i = 0; i < items.length; ++i) { const item = items[i] item.addEventListener('mouseover', onMouseover) }
На практике
Скопированосоветует Скопировано
🛠 С помощью пары событий mouseover
и mouseout
можно делать выпадающие списки и меню. Но у таких меню могут быть проблемы с доступностью.
🛠 Есть очень похожее событие mouseenter
, но оно не всплывает. Вместо этого для каждого элемента в цепочке вложенности (с самого вложенного элемента, на котором произошло событие до <body>
) создаётся собственное событие. Если у вас глубокое DOM-дерево, то таких событий может быть много. Это может привести к проблемам с производительностью.