忽略叠加图像上的鼠标交互
我有一个带有hover效果的菜单栏,现在我想在其中一个菜单项上放置一个带圆圈和“一手拉”文字的透明图像。 如果我使用绝对定位将叠加图像放在菜单项上方,则用户将无法单击该按钮,并且hover效果将不起作用。
有没有办法以某种方式禁用与此叠加图像的鼠标交互,以便菜单将继续像以前一样工作,即使它在图像下面?
编辑:
因为菜单是用joomla生成的,所以我无法调整其中一个菜单项。 即使我可以,我也不觉得javascript解决方案是合适的。 所以最后我用menu-item元素外面的箭头“标记”了菜单项。 不像我想要的那样好,但无论如何它都成功了。
我发现的最佳解决方案是使用CSS样式:
#reflection_overlay { background-image:url(../img/reflection.png); background-repeat:no-repeat; width: 195px; pointer-events:none; }
pointer-events
属性工作得很好而且很简单。
所以我做了这个,它适用于Windows XP上的Firefox 3.5。 它显示了一个包含一些文本,图像叠加层和上方透明div的框,可以拦截所有点击。
我做了什么:我已经精心设计了一个div并将其调整为菜单选项的大小,100x40px(任意值,但它有助于说明样本)。
div具有图像叠加和链接叠加。 该链接包含一个div,其大小与’menuOption’div相同。 这样,在整个框中捕获用户点击。
测试时,您需要提供自己的图像。 🙂
警告:如果您希望菜单按钮响应用户交互(例如,更改颜色以模拟按钮),那么您将需要附加到您将在标签上调用的javascript的额外代码,这个额外的代码可以解决’ menuOption’元素通过DOM并改变它的颜色。
此外,我没有其他方式可以识别您可以执行单击事件,并将其注册到可见页面元素下的元素上。 今年夏天我也尝试了这个,除此之外没有找到其他解决办法。
希望这可以帮助。
PS:在quirksmode上对事件的写作有很长的路要走,以帮助我理解事件在浏览器中的行为方式。
以Pekka Gaiser所说的为基础,我认为以下内容可行。 以他为榜样并重新改造:
在这里你应该能够在底层的a-tag上放置一个事件,除非你的图像有一个事件,否则启动捕获(!IE浏览器),然后杀死事件的传播。
如果您需要更多帮助,请告诉我们有关情况的更多信息。
如果图像将静态定位,则可以通过将img标记放在菜单项元素内来捕获图像中的单击事件。