angular - 我可以访问包含在 clipPath 中的多边形中的单击事件吗
问题描述
当我将多边形包装在 clipPath 标记中时,我无法访问它们的点击事件。
<image clip-path="url(#black-5)" width="100%" height="100%"
xlink:href="https://images.pexels.com/photos/450055/pexels-photo-450055.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260"
preserveAspectRatio="xMidYMin slice">
</image>
<clipPath id="black-6">
<polygon id="L12" (click)="testClick()" class="cls-1"
points="710.21 46.69, 738.75 96.12, 674.51 108.55, 653.14 46.69, 710.21 46.69" fill="#FFF">
</polygon>
</clipPath>
解决方案
首先,您没有正确设置 SVG,剪辑路径必须在另一个元素上使用。其次,请在 Stackblitz、Codepen 或任何其他服务上设置代码示例供我们使用。
要捕获鼠标事件,请将单击处理程序添加到顶部 svg 并解析事件的目标以找出已单击的元素。
在我为您设置的 Stackblick 示例中,检查控制台的输出。
当目标是 SVGUseElement 时,您正在使用剪辑路径单击元素。- 当目标是 SVGPathElement 时,您在剪辑路径内单击,但在被单击的元素之外。
- 当目标是 SVGSVGElement 时,您在
剪切路径之外单击