Today I have the same problem, and I did some tests.
I noticed that this same weird behavior happens when you have a translateExtent box smaller than the content items .
( ) : , translateExtent , , , , - "" , ( ).
,
D3
var MIN = {x: 0, y: -500},
MAX = {x: 2000, y: 500};
function zoomed() {
var transform = d3.event.transform;
transform.x = d3.max([transform.x, MIN.x]);
transform.y = d3.max([transform.y, MIN.y]);
transform.x = d3.min([transform.x, MAX.x]);
transform.y = d3.min([transform.y, MAX.y]);
container.attr("transform", transform);
}
d3, , translateExtent.