Событие mouseover

Время чтения: меньше 5 мин

Кратко

Секция статьи "Кратко"

Событие на HTML-элементе. Происходит, когда пользователь передвигает курсор на сам элемент или на вложенные элементы.

На события можно подписаться и выполнять JavaScript-код, когда событие произошло.

Событие является противоположным событию mouseout. Эти события часто используются в паре.

Как пишется

Секция статьи "Как пишется"
        
          
          let divEl = document.getElementsByTagName("div")[0]divEl.addEventListener("mouseover", function () {  alert("курсор вошел в границы элемента!")})
          let divEl = document.getElementsByTagName("div")[0]
divEl.addEventListener("mouseover", function () {
  alert("курсор вошел в границы элемента!")
})

        
        
          
        
      

Как понять

Секция статьи "Как понять"

Подробнее о механизме событий читай в статье «События».

Событие проще всего понять на демо. При событии mouseover мы устанавливаем элементу, на котором произошло событие, синий фоновый цвет:

        
          
          let current = undefined;function onMouseover() {  if (current) {    current.classList.remove('mouseover');  }  this.classList.add('mouseover');  current = this;  // Записываем текущий пункт,  // чтобы удалить с него класс  // при переходе курсора на новый элемент}let items = document.getElementsByTagName('li');for (let i=0; i < items.length; ++i) {  let item = items[i];  item.addEventListener('mouseover', onMouseover);}
          let current = undefined;

function onMouseover() {
  if (current) {
    current.classList.remove('mouseover');
  }
  this.classList.add('mouseover');
  current = this;
  // Записываем текущий пункт,
  // чтобы удалить с него класс
  // при переходе курсора на новый элемент
}

let items = document.getElementsByTagName('li');
for (let i=0; i < items.length; ++i) {
  let item = items[i];
  item.addEventListener('mouseover', onMouseover);
}

        
        
          
        
      
Открыть демо в новой вкладке

На практике

Секция статьи "На практике"

Николай Лопин

Секция статьи "Николай Лопин"

🛠 С помощью этого события можно делать выпадающие списки и меню.

🛠 Есть очень похожее событие mouseenter, но оно не всплывает. Вместо этого для каждого элемента в цепочке вложенности (с самого вложенного элемента, на котором произошло событие до body) создаётся собственное событие. Если у тебя глубокое DOM-дерево, то таких событий может быть много. Это может привести к проблемам с производительностью.