【发布时间】:2021-11-22 05:24:57
【问题描述】:
我有一个使用 d3.xml 导入的 SVG,当我单击 SVG 中的一个椭圆时,我试图放大。这几乎可以工作,尽管我缺少一些在 SVG 大小发生变化时定位元素的功能。这是我用来缩放的代码:
svg.transition().duration(750).call(
zoom.transform,
d3.zoomIdentity
.translate(widthContainer/2 , heightContainer/2)
.scale(2)
.translate(-d3.select(this).attr('cx'), -d3.select(this).attr('cy')),
d3.pointer(event, svg.node())
);
当浏览器窗口的大小代表创建 svg 的大小时,此方法有效,因为椭圆的 cx 和 cy 值可用于定位它们,尽管当我增加浏览器窗口当然不再起作用,因为 cx 和 cy 值现在已经不存在了。如何居中并缩放到独立于当前上下文的元素?我猜有一种方法可以找出父 div 的当前比例,然后从那里计算翻译参数,但经过几个小时的尝试,我没有找到任何东西。
【问题讨论】:
标签: javascript svg d3.js zooming programmatically