我有一个有点复杂的问题。我正在尝试通过 svg 呈现网格,然后向网格添加事件侦听器。目前我正在通过一个<pattern>
元素渲染网格。我对渲染网格的其他途径持开放态度,但它需要具有可扩展性/高性能,因为这个网格很容易成为 10 个数千个正方形。把它想象成平面图或蓝图。
我想要什么:我希望能够将事件侦听器附加到grid 的每个方块。
我所做的:我查阅了 svg 文档,尝试了很多不同的东西(比如 onclick 处理程序,svg 属性,比如指针事件……等等),但没有运气。我可能可以让它与鼠标客户端坐标一起工作,但是如果可能的话,我想避免使用这种方法,因为这个 svg 将具有缩放和平移功能......这会使坐标转换变得痛苦。
基本 svg 代码(针对此问题进行了简化):
<svg viewBox="0 0 100 100">
<g className="view-control">
<defs>
<pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse">
<path d="M 10 0 L 0 0 0 10" fill="none" stroke="gray" strokeWidth="0.5"/>
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#grid)" />
</g>
</svg>