d3js,当鼠标拖动空白区域时,力图持续跳跃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了d3js,当鼠标拖动空白区域时,力图持续跳跃相关的知识,希望对你有一定的参考价值。
我有以下问题。
我使用了力图并为它添加了缩放。
但是当鼠标拖动空白区域时,力图会一直跳跃。
如何使图形不跳?谢谢。
(我为我的英语感到非常抱歉。再次感谢你。)
这是我的缩放代码。
var zoom = d3.behavior.zoom()
.scaleExtent([1, 10])
.on("zoom", zoomed);
function zoomed() {
svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
答案
我向你的基础SVG添加了一个g元素,将所有元素组合在一起(也将任何其他元素附加到g元素而不是svg),然后在zoomed()方法中,对该g元素而不是svg元素执行转换:
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 + ")");
缩放方法:
function zoomed() {
g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
此外,在设置节点侦听器时,请停止“mousedown”事件的事件传播,如下所示:
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);
以上是关于d3js,当鼠标拖动空白区域时,力图持续跳跃的主要内容,如果未能解决你的问题,请参考以下文章