我已经编写了代码,当我双击区域时,可以缩放我的SVG区域。我使用了transform scale属性来实现这一点,将当前比例乘以一个因子(例如1.2,以提供20%的缩放)。
我也可以通过操作viewbox属性的第二个和第三个参数来达到同样的效果。减小它们会导致区域元素缩小,反之亦然。
对于这两种不同方法的优缺点有什么观察意见吗?
我也可以通过操作viewbox属性的第二个和第三个参数来达到同样的效果。减小它们会导致区域元素缩小,反之亦然。
对于这两种不同方法的优缺点有什么观察意见吗?
我认为在实际应用中,使用viewbox会更快,尽管性能基准测试会显示相反的信息。
我创建了一个jsPerf:http://jsperf.com/transform-scale-vs-viewbox-scale
jsPerf似乎给我错误的测试时间,从而扭曲了结果,但是这一点是确定的:变换测试的代码更短,没有字符串操作,并且在更短的时间内运行了更多次。
显然,transform scale更快。代码看起来更快,测试已经损坏,但是观察测试运行表明变换运行更多次。但是,我仍然觉得在实际应用中,viewbox更快。
结论:计算机很快;使用viewbox;这样做更少的工作;在这里进行优化可能不会给您带来巨大的性能提升。
svgRootElm.currentScale*=factor
可能更好,因为它更直接,而且不会触及文档树中的任何实际属性。 - Erik Dahlström