Javascript D3.js缩放对象而不更改其位置
我需要缩放svg对象而不改变其相对位置。 特别是我有一个包含一个矩形的组和一个有一些圆的组,我想创建一个过渡,改变矩形的宽度和高度,以相同的比例增加其大小,并用矩形的相同比例因子但不改变其位置的圆来缩放组Javascript D3.js缩放对象而不更改其位置,javascript,css,d3.js,svg,Javascript,Css,D3.js,Svg,我需要缩放svg对象而不改变其相对位置。 特别是我有一个包含一个矩形的组和一个有一些圆的组,我想创建一个过渡,改变矩形的宽度和高度,以相同的比例增加其大小,并用矩形的相同比例因子但不改变其位置的圆来缩放组 var rect = d3.select("svg").selectAll("rect") .transition() .duration(750) .attr("x", function(d) { return tx(d.x); }) .attr("y", function(
var rect = d3.select("svg").selectAll("rect")
.transition()
.duration(750)
.attr("x", function(d) { return tx(d.x); })
.attr("y", function(d) { return ty(d.y); })
.attr("width", function(d) { return tx(d.x + d.dx) - tx(d.x); })
.attr("height", function(d) { return ty(d.y + d.dy) - ty(d.y); });
var tree = d3.selectAll("g.tree")
.transition()
.duration(750)
.attr("transform", function(d) {
var sx = (tx(d.x + d.dx) - tx(d.x))/x(d.dx),
sy = (ty(d.y + d.dy) - ty(d.y))/y(d.dy),
s;
if(sx > sy) {
s = sy;
rx = (tx(d.x)-x(d.x));
ry = (ty(d.y)-y(d.y));
}
else {
s = sx;
rx = (tx(d.x)-x(d.x));
ry = (ty(d.y)-y(d.y));
}
return "scale("+s+")"+"translate("+rx+","+ry+")";});
d3.event.stopPropagation();
您可以在JSFIDLE中添加您的工作吗?很抱歉,这是不可能的,因为我在项目中使用了一些本地文件;我的问题是,当我缩放组时,它也会转换为改变其相对于矩形的位置。听起来你需要单独缩放每个元素。