<div class="container">
<div class="spacer"></div>
<svg>
<g id="polygonGroup" transform="translate(80, 50)">
<polygon points="-60,-10 -35,-30 -10,-10 -10,30 -60,30"></polygon>
<polygon points="10,-10 35,-30 60,-10 60,30 10,30"></polygon>
<polygon class="origin" points="-4,0 0,4 4,0 0,-4"></polygon>
</g>
<g id="textGroup" transform="translate(80, 50)">
<text x="-35" y="10">Text</text>
<text x="35" y="10">Text</text>
</g>
</svg>
</div>
这个简单的jQuery click事件处理程序:
function clicked(event) {
console.log(event.offsetX, event.offsetY);
}
$('svg').click(clicked);
如图所示:
https://jsfiddle.net/1ht0L8y6/6/
铬:
坐标是基于SVG元素的左上角的,无论我在SVG中单击何处。这是我想要的行为。
火狐:
坐标基于我所在的元素的左上角,可以是SVG、多边形或文本。
-
在SVG中而不是在其任何子元素中时,坐标
-
在多边形中,坐标是
基于
<g>
translate
抵消
(即黑钻石)。负坐标是可能的,
与Chrome或Firefox不同。
-
我观察到一个不同的行为
这些浏览器中的文本元素:它们将根据
文本元素的中间底部。但我没能做到
在fiddle中重现;在fiddle文本中元素的行为
与这些浏览器中的多边形相同。