d3.js - D3 v4 : element 'snaps' to previous translate after programmatic transform

标签 d3.js svg

function zoomed() { svg.attr("transform", d3.event.transform); }
var zoom = d3.zoom().on("zoom", zoomed);

var svgMain = d3.select('body').append('svg').call(zoom);
var svg = svgMain.append('g') // All the drawing done here

当我使用 svg.call(zoom.translateBy, 100, 100) 以编程方式翻译 svg 时,然后用鼠标拖动元素,svg > 变换属性会恢复到拖动之前的值。

这几乎就像 svg.call 所影响的变换没有被存储或保存,而是恢复为存储在 d3.event.transform 中的变换。

Logging d3.event.transform shows the problem

This question尽管对于 v3,似乎也遇到了同样的问题。

最佳答案

似乎您正在将缩放行为应用于两个不同的节点 - svgMainsvg

尝试运行 svgMain.call(zoom.translateBy, 100, 100) 而不是 svg.call(...) 并查看是否可以解决问题。

关于d3.js - D3 v4 : element 'snaps' to previous translate after programmatic transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43516893/

相关文章:

svg - 在D3强制有向图中的链接上添加文本/标签

html - SVG ViewBox 中断高度

javascript - CSS 动画六边形菜单

javascript - 如何创建像指标一样的循环进度(饼图)

javascript - 为什么需要在 D3.js 中点击两次才能触发我的点击事件?

javascript - 如何为 dc js 箱形图设置 y 域?它处理负值吗?

d3.js - shp2json 生成边界和坐标不在​​ (-180,180) 范围内的 GeoJSON

javascript - 在多页中打印大型 SVG (A4)

java - 从 Java 检索在网页上动态呈现的 SVG

javascript - 在鼠标悬停时更改链接和箭头颜色