我正在使用 SVGPanZoom 在我的混合 Android 应用程序中管理 SVG 图像的缩放(所有意图和目的都与 Chrome 中的行为相同)。虽然缩放效果很好,但我发现了一个奇怪的问题。我原来的内联 SVG 元素是这样的
<svg id='puzzle' viewBox='0 0 1600 770' preserveAspectRatio='none'
width='100vw' height='85.5vh' fill-rule='evenodd' clip-rule='evenodd'
stroke-linejoin='round' stroke-miterlimit='1.414'
xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://
www.w3.org/1999/xlink'>
最初,这个 SVG 元素是空的,并在运行时从 JavaScript 以编程方式填充,之后我按如下方式启动 SVGPanZoom
var panZoom = svgPanZoom('#puzzle',
{panEnabled:false,controlIconsEnabled:false,
zoomEnabled:true,dblClickZoomEnabled:true,onZoom:postZoom});
panZoom.refreshRate = 10;
panZoom.zoomScaleSensitivity = 0.02;
我遇到的问题是 - 我希望我的 SVG 图像填充可用区域,100vw x 85.5vh
完全做到这一点,我通过preserveAspectRatio="none"
上面的属性指示它以及viewBox="0 0 1600 770" attribute. I have found that this works - so long as I don't use SVGPanZoom. As soon as I initiate panZoom the
zoomBox`属性被剥离,我最终得到一个不就其默认的拉伸/填充行为而言,其行为相当。
SVGPanZoom 被广泛使用,所以我认为这种行为是由于我没有正确设置它。深入研究我发现 SVGPanZoom 创建的代码cacheViewBox
,然后继续删除原始的 zoomBox 属性。
如果在该缩放工作之后并且应用程序的原始行为没有改变(这不是我发现的),那很好。我在这里做错了什么?