【发布时间】:2010-04-22 08:38:45
【问题描述】:
有没有办法只让图像的不透明部分触发鼠标悬停事件?
如果鼠标移动到透明区域,则应触发鼠标移出,并且脚本应侦听图像下方图层上的任何鼠标悬停事件。
有可能吗?感谢您的任何意见。
编辑: 我希望在不使用 Flash 的情况下做到这一点。
【问题讨论】:
标签: javascript html css
有没有办法只让图像的不透明部分触发鼠标悬停事件?
如果鼠标移动到透明区域,则应触发鼠标移出,并且脚本应侦听图像下方图层上的任何鼠标悬停事件。
有可能吗?感谢您的任何意见。
编辑: 我希望在不使用 Flash 的情况下做到这一点。
【问题讨论】:
标签: javascript html css
您可以使用带有老式<map> 和<area> 标签的图像。区域标签可以触发 javascript 鼠标事件(一个使用示例是这个 jQuery 插件:jQuery maphilight)。
但是,没有动态创建地图的好方法 - 您必须手动完成,或者调用服务器端服务来映射它。
【讨论】:
ImageMapster 看起来是让 图像区域地图 跨浏览器(IE6+,需要 jQuery)工作的好方法。
另一种选择是使用raphael.js,它会创建SVG 矢量 图像,这些图像被翻译成适用于IE6 以上的所有设备(我相信,除了一些旧Android 手机中的股票浏览器之外的所有设备)。它们可以通过各种方式使用 javascript 进行控制,并且可以具有所有标准事件,例如鼠标悬停、单击等。
Raphael 在这里比 Flash 选项更有效,因为它不依赖 Flash。它不如面积图选项简单,并且学习曲线陡峭,但对于复杂的情况和动态变化的形状,它带来了多种方式来控制您创建的矢量图像的额外好处。
【讨论】:
您可以绘制出图像透明部分的位置(鉴于此 chroma-key 示例,我希望您可以在某些浏览器的客户端代码中执行此操作),然后比较事件在 mousemove 上的位置事件来查看指针是否在透明部分上。然后你只需要添加一个变量来跟踪你上次检查时它是否超过了那个部分。
【讨论】:
据我所知,目前还无法检测到图像的透明部分。
【讨论】:
您可以制作一个具有固定高度的子 div 到透明区域的大致大小,绝对定位在其上方,并带有空白背景和边框,然后添加脚本以激活该 div 或 div 内的内容。
【讨论】:
这是可能的,如果您使用 Flash。
这里有一些提示
【讨论】: