en.javascript.info/archive/widget-tasks/2-moving-tooltip/solution.md
2015-02-21 14:58:02 +03:00

1.4 KiB
Raw Blame History

События

Три события имеют отношение к подсказке:

  1. При `mouseover` -- показать.
  2. При `mousemove` -- показать на новом месте.
  3. При `mouseout` -- спрятать.

...Но при заходе на элемент происходят сразу оба события: mouseover и mousemove на нём же. Зачем вызывать код для показа два раза? Можно оставить его только в mousemove.

Стиль элемента подсказки:

.tooltip {
  position:absolute;
  z-index:100; /* подсказка должна перекрывать другие элементы */
  ...
}

Решение

[edit src="solution"]Решение в песочнице[/edit]

В нём есть две тонкости.

  1. Для того, чтобы можно было получить высоту и ширину, подсказку надо сначала показать.
  2. При показе -- важно, чтобы подсказка не оказалась *под* курсором. Если такое произойдет, то дальнейшие события `mousemove` станут происходить *уже на подсказке*, а не на элементе, и их обработка сломается.