Масштабирование различных частей SVG в зависимости от положения мыши

Итак, я нашел скрипт, который делает именно это , но увеличивает масштаб <g> который оборачивает все содержимое SVG, применяя к нему матрицу преобразования (хотя он не увеличивает масштаб в Opera из-за обнюхивания). Оборачивать все элементы в <g> не вариант, потому что я делаю просмотрщик изображений и могут быть загружены разные файлы.

Установка transform="matrix(...)" на корень <svg> не дает никакого эффекта. Установка currentScale на <svg> увеличивает изображение, но делает это от верхнего левого угла, а не от положения мыши или от центра изображения. И функция панорамирования тоже не работает, так как кажется невозможным перетащить весь элемент <svg>.

Манипуляции с атрибутом viewBox кажутся полезными, но очень сложно определить для него необходимые значения.

Итак, можете ли вы придумать способ масштабирования и панорамирования в таком контексте?

Вы можете загрузить демонстрацию здесь . Требуется, чтобы Opera была установлена ​​на вашем компьютере.


person Spadar Shut    schedule 07.08.2010    source источник


Ответы (1)


Существует свойство currentTranslate, которое можно изменить в дополнение к currentScale.

person Erik Dahlström    schedule 07.08.2010
comment
Спасибо, но спецификация говорит, что это только для чтения. Не могли бы вы уточнить, как я могу его использовать? - person Spadar Shut; 08.08.2010
comment
Да, сам объект currentTranslate доступен только для чтения, но вы можете писать в currentTranslate.x и currentTranslate.y. - person Erik Dahlström; 09.08.2010