所以,我找到了一个脚本,似乎可以实现这一点,但它通过对包含整个SVG内容的
<g>
应用变换矩阵来缩放它(尽管由于嗅探,它在Opera中不会缩放)。将所有元素都包装在<g>
中不是一个选项,因为我正在制作一个图像查看器,可能会加载不同的文件。
在根<svg>
上设置transform="matrix(...)"
没有效果。在<svg>
上设置currentScale
可以缩放图片,但是它从左上角而不是从鼠标位置或图像中心进行。并且平移功能也无法工作,因为似乎不可能拖动整个<svg>
元素。
操纵viewBox
属性似乎有帮助,但是弄清楚必要的值真的很棘手。
那么你能想到在这种情况下进行缩放和平移的方法吗?
你可以在这里下载演示。需要在你的电脑上安装Opera浏览器。
currentTranslate
对象本身是只读的,但您可以写入currentTranslate.x
和currentTranslate.y
。 - Erik Dahlström