У меня есть силовой ориентированный граф (скрипка здесь )
Я установил viewbox на самом svg. Я установил зум на самом SVG. Если я на самом деле применяю преобразование к самой svg, это просто сходит с ума. Если я добавляю группу, содержащую все мое содержимое SVG, и применяю к ней преобразование (сохраняя привязку к родительскому SVG), это работает отлично.
Извиняюсь, если кажется странным задавать вопрос «почему это работает», но меня действительно беспокоит, что я не знаю, почему это так. Почему событие преобразует go сумасшедший, когда связывает zoom и преобразование с одним и тем же элементом?
Два поведения можно увидеть, если переключить SHOW_BROKEN в true / false, который управляет поведением преобразования здесь ...
function zoomed() {
if (SHOW_BROKEN) {
// This does not work. Im confused
d3.select(this).attr("transform", d3.event.transform);
} else {
// This works pretty much perfectly (self.svg is actually a group)
self.svg.attr("transform", d3.event.transform);
}
}