我正在尝试使用 d3 制作一个包含任意数量的矩形和文本元素的块。我设想的方式是将所有内容嵌套在一个 svg 中,并让 svg 可以拖动,而所有内容都随之移动。
但是,每当我将拖动行为附加到元素时,它就会在我移动它时变得模糊。即使我将 ag 嵌套在 svg 和其他所有带有 g 元素的东西中,也会发生这种行为。
这是简化的代码。我有一个主 svg,我在其中插入另一个 svg,我在其中嵌套了一个矩形。
var dragT = d3.select('#test').append('svg').selectAll('svg.test')
.data([{x:100,y:100}])
.enter().append('svg')
.attr('x',100).attr('y',100)
.style('width',100)
.call(rectDragBehav).append('g')
.append('rect').attr('x',100).attr('y',100)
.attr('width',100).attr('height',100);
var rectDragBehav = d3.behavior.drag()
.on('drag', rectDragDrag)
function rectDragDrag(d,i) {
d.x += d3.event.dx;
d.y += d3.event.dy; console.log(1);
d3.select(this)
.attr('x',d.x)
.attr('y',d.y);//.attr("transform", "translate(" + d.x + "," + d.y + ")");
}
更新:我不知道这意味着什么,但我刚刚发现当你向下滚动以使整个 svg 看不见并向上滚动时,残像消失了。