繁体   English   中英

如何使页面滚动触发鼠标悬停事件?

[英]How can I make page scrolling trigger mouseover events?

当鼠标由于滚动(通过滚轮或键盘滚动)而开始悬停在元素上时,它不会在其悬停的元素上触发鼠标悬停事件(OSX 上的 Chrome 6)。 滚动时触发正确元素的鼠标悬停事件的优雅方式是什么?

老实说,这会很痛苦。 你必须

  1. 确定应该获得鼠标悬停处理程序的每个元素的大小和位置。
  2. 向窗口添加滚动侦听器。
  3. 在处理程序中,获取鼠标光标位置和 pageOffset。
  4. 找出光标所在的元素。
  5. 手动调用实际的鼠标悬停处理程序
  6. (找出光标离开了哪些元素,如果你也想要一些鼠标移开行为)

如果元素是动态的,您可能需要重新计算元素的位置和大小。 (在 3 下移动 1。)

虽然这应该适用于块级元素,但我完全不知道内联元素的解决方案。

这在使用document.elementsFromPoint的现代网络中要简单得多:

  1. 向窗口添加滚动侦听器。
  2. 在处理程序中,调用document.elementsFromPoint
  3. 为这些元素手动调用实际的mouseover处理程序。
  4. 为不再悬停的元素手动调用实际的mouseleave处理程序。

尝试一些像myDiv.style.opacity = 1+Math.random();这样的 hack myDiv.style.opacity = 1+Math.random(); 滚动 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM