v4以上的api 没搞懂
var width = document.getElementById("tree").offsetWidth;
var height = document.getElementById("tree").offsetHeight;
var zoom = d3.behavior.zoom().center([width, height]).scaleExtent([0.1, 100]).on("zoom", zoomed);//添加放大缩小事件
function zoomed() {
svg.attr("transform",
"translate(" + d3.event.translate + ")" +
"scale(" + d3.event.scale + ")"
);
}
var svg = d3.select("body").select("#tree").append("svg")
.call(zoom)//给svg绑定zoom事件、
.append("g")
// .attr("transform", "translate(150,0)")
.attr("transform", "translate(" + width / 4 + ","+ 0 +")")
// zoom.translate([150,0])
zoom.translate([width / 4,0])
点击事件中执行下面操作 在vue中注意指向问题。
svg.attr('transform', 'translate(' + (width / 4 - d.y0) + ', ' + (height / 2 - d.x0) + ')')
zoom.translate([(width / 4 - d.y0), (height / 2 - d.x0)]).scale(1)
// 加了缩放以后但是他的距离又无法控制。
const a = zoom.scale()
svg.attr('transform', 'translate(' + (width / 4 - d.y0 * a) + ', ' + (height / 2 - d.x0 * a) + ') scale(' + a + ')')
zoom.translate([(width / 4 - d.y0 * a), (height / 2 - d.x0 * a)]).scale(a)