增加 SVG 元素的悬停区域

Posted

技术标签:

【中文标题】增加 SVG 元素的悬停区域【英文标题】:Increase hover area of SVG element 【发布时间】:2014-08-28 15:19:59 【问题描述】:

有一个像这样的 SVG 元素 -

<path d="M0,5.26429605180997L6.078685485212741,-5.26429605180997 -6.078685485212741,-5.26429605180997Z" transform="translate(100,100)scale(0.8)" style="fill: rgb(0, 0, 0);"></path>

现在,这个元素太小了,悬停在它上面非常困难。

如何增加悬停区域(保持该元素的区域相同),以便即使鼠标指向大约 2 px,悬停事件也会被触发?

【问题讨论】:

【参考方案1】:

我的建议是在处理悬停事件的对象上方创建另一个完全透明的 svg 元素。例如

<path d="M0,5.26429605180997L6.078685485212741,-5.26429605180997 -6.078685485212741,-5.26429605180997Z" transform="translate(100,100)scale(2.0)" style="fill: rgb(0, 0, 0, 1.0);"></path>

我不知道是否可以按照您描述的方式增加元素的悬停区域。 (如果是,我很想知道如何。)

【讨论】:

您无需调整变换。只要给它一个看不见的笔触,就是你需要的粗细。 下面是一个例子:xn--dahlstrm-t4a.net/svg/interactivity/…(当鼠标光标距离形状小于 20px 时触发悬停效果)。【参考方案2】:

增加您的描边宽度并将描边不透明度设为0。如果 0 不起作用,则使其 0.01

【讨论】:

当笔画宽度与悬停区域无关时,这是如何被接受的答案? 增加笔画宽度会扩大可以悬停的区域,但这不是一个很好的解决方案。如果 SVG 已经将笔画用于视觉目的,则不能使用它。

以上是关于增加 SVG 元素的悬停区域的主要内容,如果未能解决你的问题,请参考以下文章

当我在 SVG 中将鼠标悬停时,如何显示和隐藏同级元素?

鼠标悬停时的SVG工具提示?

悬停链接并在 SVG 中更改颜色 [重复]

jQuery SVG - 悬停元素

CSS:悬停在 SVG 组区域而不是渲染像素上,指针事件:边界框不能跨浏览器工作。如何解决

在悬停另一个元素时更改 SVG 填充颜色