javascript - html, svg, css 如何使鼠标事件不触发透明颜色

标签 javascript html css svg

是否可以使鼠标事件不在图像的透明颜色上触发?

我有一张大背景图片和几张不同形状(例如球形)的小图片。我想在这些小图像上捕捉鼠标事件。问题是事件会在图像的整个矩形上触发。我可以在背景图像上使用图像贴图,但这不是一个好主意,因为小图像会在鼠标( Sprite )下发生变化。

最佳答案

您可以检查很多东西,可以是 svg 形状、路径或矩形的填充,也可以是 opacity 属性,具体取决于您如何使元素透明。

例如:

$('svg rect').mouseenter(function(){
    if($(this).attr('opacity') != 0){
      $('body').append('hovered element with colour');    
  }
});

这是一个例子:

http://codepen.io/EightArmsHQ/pen/zxLbXO

编辑

使用更复杂的图像,例如

http://mobilite.mobi/wp-content/uploads/white-rabbit-wallpapers-9.

您有两个选择。 (对我来说,一个平面设计师变成了网页设计师)更简单的方法是创建一个 SVG 命中图) enter image description here

但更彻底的解决方案是使用 HTML5/JavaScript canvas 元素,它可以包含所有这些东西,但初始编码会更复杂。

如果你使用 canvas alpha hit detection 我相信你将能够通过谷歌搜索一些很好的结果,比如

Image map by alpha channel

关于javascript - html, svg, css 如何使鼠标事件不触发透明颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28878797/

相关文章:

javascript - 将 youtube 中的 url 替换为嵌入代码 - 错误 : Permission denied to access property 'toString'

html - 悬停时自定义导航栏折叠按钮

php - 显示结果表 SQL

html - 当父宽度不是偶数时,Chrome 会阻止我的表格占据完整的 100% 宽度

regex - 控制容器中的自动换行

javascript - 开始使用 JavaScript 中的动画排版/粒子(将粒子映射到单词)?

javascript - 如何解决错误 "THREE.GLTFLoader: Failed to load buffer "scene.bin“。”?

html - 如何使 HTML5 MeasureText() 和 FillText() 跨浏览器保持一致

jquery - 复杂的 jQuery .hover 工作

javascript - D3.js 连接多个 csv 文件中的数据