Javascript 仅在图像的不透明部分悬停

Javascript 仅在图像的不透明部分悬停,javascript,html,css,Javascript,Html,Css,有没有办法使图像的非透明部分触发鼠标悬停事件 如果鼠标移动到透明区域,则应触发鼠标移出,脚本应侦听图像下方层上的任何鼠标悬停事件 可能吗?谢谢你的意见 编辑: 我希望在不使用flash的情况下完成此操作。据我所知,目前无法检测图像的透明部分。您可以创建一个具有固定高度的子div,其大小与透明区域大致相同,绝对位于其上方,背景和边框为空白,然后将脚本添加到acitvate该div,或者div中的内容。您可以映射出图像的透明部分的位置(在本例中,我希望您可以在某些浏览器的客户端代码中这样做),然后比

有没有办法使图像的非透明部分触发鼠标悬停事件

如果鼠标移动到透明区域,则应触发鼠标移出,脚本应侦听图像下方层上的任何鼠标悬停事件

可能吗?谢谢你的意见

编辑:
我希望在不使用flash的情况下完成此操作。

据我所知,目前无法检测图像的透明部分。

您可以创建一个具有固定高度的子div,其大小与透明区域大致相同,绝对位于其上方,背景和边框为空白,然后将脚本添加到acitvate该div,或者div中的内容。

您可以映射出图像的透明部分的位置(在本例中,我希望您可以在某些浏览器的客户端代码中这样做),然后比较
mousemove
事件上事件的位置,查看指针是否在透明部分上。然后,您只需要添加一个变量来跟踪上次检查时是否超过了该部分。

如果您使用Flash,这是可能的

这里有一些提示

  • 使用Flash加载非比例图像,在Flash中编写click事件处理程序(并在单击时将其传递给javascript)
  • 加载带有透明标志的flash对象
  • 将对象或嵌入标记设置为非常大的zIndex,如9999或其他东西,使其位于顶部

    • 您可以将图像与老式的
      )一起使用。
      但是,动态创建地图并没有好方法——您必须手动创建地图,或者调用服务器端服务来绘制地图。

      看起来是一种很容易获得图像区域地图的好方法。跨浏览器工作(IE6+,需要jQuery)

      另一种选择是使用它创建SVG向量图像,这些图像被转换为从IE6到以上的所有功能(我相信,除了一些旧Android手机中的股票浏览器之外的所有功能)。它们可以通过各种方式使用javascript进行控制,并且可以具有所有标准事件,例如鼠标悬停、单击等


      Raphael在这里比Flash选项工作得更好,因为它不依赖Flash。它没有“区域地图”选项简单,并且具有陡峭的学习曲线,但是,对于复杂情况和动态变化的形状,它带来了控制创建的矢量图像的多种方法的额外好处

      为什么单击事件?在Flash中,如何确定图像的哪些部分是透明的,以便知道将事件放置在何处?@David,在Flash中,如果在图像上附加click事件,则只能在不透明的图像上执行。我只是现在没有例子来展示,但我肯定以前做过,也见过其他人。当鼠标移动到不透明区域时,点击事件将如何帮助检测?@David,你知道,Flash可以在每个对象内部编写代码,比如图像,图像可以是png或gif,Flash了解图像的透明度,而将点击事件放在图像中只能钩住可见的部分。好吧,我明白不看一个例子很难理解。看起来OP刚才提到他不想使用flash,所以可能有机会我会这样做。谢谢。这给我指明了前进的道路。让我等一下,看看能不能得到更多的答案。这可能是你最好的选择。逐渐减少的好主意包括a)在图像的非透明部分上分层透明div,并将单击事件添加到这些div中;b)使用Flash,但那应该是最后的手段。正如你所说,我最终使用了经典的图像地图。在没有flash的情况下,找不到任何其他好方法来处理它。我的客户的网站将落后于一个相对较慢的连接,因此不得不从代码中挤出每千字节。谢谢