首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3js,当鼠标拖动空白区时,力图不断跳动

d3js,当鼠标拖动空白区时,力图不断跳动
EN

Stack Overflow用户
提问于 2018-03-01 20:05:24
回答 1查看 181关注 0票数 2

我有很多问题要问。

我使用了力图并为它添加了缩放。

但当鼠标拖动空白区域时,力图会不断跳跃。

like this

如何使图形不跳跃?谢谢。

(我再次为我的English.Thank you感到非常抱歉。)

这是我的变焦代码。

代码语言:javascript
复制
var zoom = d3.behavior.zoom()
    .scaleExtent([1, 10])
    .on("zoom", zoomed);

function zoomed() {
  svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 03:53:29

我在基本SVG中添加了一个g元素,以便将所有内容组合在一起(还将任何其他元素附加到g元素,而不是svg),然后在zoomed()方法中,对该g元素而不是svg元素执行转换:

代码语言:javascript
复制
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.call(zoom);

var g = svg.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.right + ")");

Zoom方法:

代码语言:javascript
复制
function zoomed() {
  g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

此外,在设置节点侦听器时,请停止'mousedown‘事件的事件传播,如下所示:

代码语言:javascript
复制
var node = g.selectAll(".node")
.data(force.nodes())
.enter().append("g")
.attr("class", "node")
.on("mouseover", mouseover)
.on("mouseout", mouseout)
.on("click", click)
.on("dblclick", dblclick)
.on("mousedown", function(d) { 
  d3.event.stopPropagation();
})
.call(force.drag)
.on('click', connectedNodes);

Here's the working example.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49049396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档