Показать сообщение отдельно
  #2 (permalink)  
Старый 01.06.2018, 01:16
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

Я не уверен в том, насколько подробные объяснения вам нужны. Примерно так думаю должно быть лучше понятно:

var showingTooltip; // Создадим переменную, в которой будет храниться подсказка

document.onmouseover = function(e){ // при событии "наведение мыши" запускаем анонимную функцию
var target = e.target; // Записываем в переменную target тот элемент, на который наведена мышь

var tooltip = target.getAttribute('data-tooltip'); // Записываем в переменную содержимое data-tooltip, того элемена, на который наведена мышь
if (!tooltip) return; // Если содержимого data-tooltip нет, то ничего не делаем (буквально возвращаем ничего)
// В противном случае:
var tooltipElem = document.createElement('div'); // Создаем новый элемент <div></div>
tooltipElem.className = 'tooltip'; // Устанавливаем элементу класс - class="tooltip"
tooltipElem.innerHTML = tooltip; // Внутрь элемента помещаем содержимое атрибута data-tooltip
document.body.appendChild(tooltipElem); // Вставляем этот элемент на страницу

var coords = target.getBoundingClientRect(); // Получаем в coords все CSS стили элемента, на который наведена мышь

var left = coords.left + (target.offsetWidth - tooltipElem.offsetWidth) / 2; // запишем нужные координаты по горизонтали
if (left < 0) left = 0; // не вылезать за левую границу окна

var top = coords.top - tooltipElem.offsetHeight - 5; // запишем нужные координаты по вертикали
if (top < 0) { top = coords.top + target.offsetHeight + 5; } // не вылезать за верхнюю границу окна

tooltipElem.style.left = left ; // применить к подсказке координаты по горизонтали
tooltipElem.style.top = top ; // применить к подсказке координаты по вертикали

showingTooltip = tooltipElem; // записать в переменную showingTooltip готовую подсказку
};


document.onmouseout = function(e) { // При событии "мышь ушла с элемента", запускаем анонимную функцию
if (showingTooltip) { // Если на странице уже имеется подсказка, то...
document.body.removeChild(showingTooltip); // удаляем ее из DOM (со страницы)
showingTooltip = null; // очищаем переменную, в которой хранилась подсказка
}

};
Ответить с цитированием