【发布时间】:2018-01-09 09:54:33
【问题描述】:
我有一个透明的 PNG,并希望使用 map 和 area 元素捕获点击。因为我需要透明部分下方的区域也可以点击,所以我做了以下操作:
img{
position: relative;
pointer-events: none;
}
map, area{
pointer-events: auto;
}
但是,这会使浏览器也忽略关联地图上的指针事件。我该如何解决?
https://codepen.io/kslstn/full/jYZVmV
请注意,在 Codepen 中,图像不是透明的,但我发现与透明图像没有区别。
背景:我正在制作非矩形地板的 3D 平面图。 Here's an example 那个带有矩形地板的设置。
【问题讨论】:
-
“是否可以让浏览器只忽略图像的透明部分” - 不,不是。鼠标交互不依赖于你可以“看到”什么,而只是依赖于元素的形状——对于你的JPEG图像来说,这只是一个普通的旧矩形。您也许可以计算点击必须“通过”一个层(鼠标移动事件处理程序,检查坐标),并为相关元素动态打开和关闭
pointer-events...不是确定这将如何运作。在 SVG 中实现这一点可能更有意义。 -
SVG 元素仍然是 HTML 中的矩形框,就像我的 PNG 一样。平面图过于复杂,无法按照此答案中的建议为所有 SVG 元素添加指针行为:stackoverflow.com/questions/12905808/…
-
“是否有可能让浏览器只忽略图像的透明部分” - 不,不是真的。鼠标交互不取决于你能“看到”什么,而只是取决于元素的形状“我非常痛苦地意识到这一点,因此我在地图和区域上胡闹:)
-
我对问题进行了大量编辑,以使其更切题,省略了平面图的内容,但提到它是为了让上面的 cmets 看起来不疯狂。
标签: javascript html css