在我的angularjs
项目中,我曾经构建了一棵可折叠的树,我使用了这里d3js
提供的代码。
现在我正在尝试添加一些简单的缩放和平移功能:
var initZoom = function () {
var zoom = d3.zoom().extent([[0, 0], [width, height]]).scaleExtent([0.25, 10]).on('zoom', handleZoom);
d3.select('#d3zoom').call(zoom);
};
var handleZoom = function (e) {
d3.select('#d3zoom').attr('transform', e.transform);
};
HTML:
<div id="d3">
<svg id="d3svg">
<g id="d3zoom"></g>
</svg>
</div>
这有效,但只有当我的鼠标光标已经悬停在 svg 中的某个项目(如节点或链接)上时才有效。但是,我想要的是无论我的鼠标光标在哪里,只要它在 svg 上,都可以平移和缩放,到目前为止,我还不知道该怎么做。
您应该在 svg 上创建缩放(及其事件处理程序),然后将缩放变换应用于
g
包装元素的元素。g
没有技巧的元素没有指针事件。运行代码: