Transition会破坏SVG旋转

时间:2016-08-19 21:01:44

标签: javascript svg rotation transition

我正在开发一个JavaScript项目,作为其中的一部分,尝试围绕给定点旋转svg路径元素。 以下是js文件的简化示例:

Anchor

而html只是:

None

Here你可以在JSfiddle上找到它。

正如上面摘录中的评论所暗示的那样,旋转函数的3参数版本都可以正常工作,在这里我可以指定我想用作旋转中心的点的x和y坐标。生成的路径元素获取值为

"rotate(120,150,150)"
的transform属性,除非我想使用转换。

当我插入关于转换的行时,转换会添加一些奇怪的额外内容,它看起来像

"translate(354.9038105676658, 95.09618943233417) rotate(119.99999999999999) skewX(-3.1805546814635176e-15) scale(0.9999999999999999,0.9999999999999999)"

我猜在背景中,非(0,0)中心旋转会被一些平移和(0,0)中心旋转所取代,就像在几何体中一样。过渡后的位置和方向确实很好。但是,在转换过程中,元素在一条有趣的路径上移动,在该示例中,扇区离开了圆圈。

有没有办法可以抑制转换进行所有这些转换,只应用一个非基于(0,0)的旋转?
还有其他解决方法吗?
更改path元素属性的transform-origin似乎不起作用,但也许我做错了。
我正在寻找一个无CSS的解决方案。这是一个建筑决策,我不能否决该项目 如您所见,D3已经参与了该项目,但我希望尽可能少使用其他外部库。

提前致谢!

1 个答案:

答案 0 :(得分:1)

创建弧,其中心位于(0,0)。然后将其转换为圆心。 然后d3转换将很好地工作如下:

{{1}}