动态调整svg文件大小的最佳方法是什么?
What is the best method for dynamically resizing svg files?
我正在使用hammer.js触摸函数为svg文件开发缩放和拖动功能。我知道有多种方法可以调整svg文件的大小,这与修改典型的jpg或png文件的方式不同。我想知道这些方法中哪一个最适合使用hammer.js进行缩放。我不是在修改svg中的单个元素,而是在修改整个svg文件。
第一,我可以改变svg的x、y、宽度和高度值。第二,我可以使用setAttribute()调用添加比例转换。第三,我可以修改viewbox元素属性。第四个选项可能是将其中一个或多个组合起来。
是否有一种方法比其他方法更有效?
谢谢你,——克里斯多夫
-
编辑**添加jsfiddle svg示例。http://jsfiddle.net/LM2U6/
<svg version="1.1" style="border:1px solid #00f;" id="testsvg" preserveAspectRatio="xMinYMin slice" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200" height="200" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve"> <rect x="75" y="75" width="50" height="50" style="stroke: #3333cc; fill:none;" /> </svg> <svg version="1.1" style="border:1px solid #00f;" id="testsvg4" preserveAspectRatio="xMinYMin slice" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200" height="200" viewBox="50 50 100 100" xml:space="preserve" > <rect x="75" y="75" width="50" height="50" style="stroke: #3333cc; fill:none;" /> </svg> <svg version="1.1" id="testsvg2" style="border:1px solid #00f;" preserveAspectRatio="xMinYMin slice" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="400" height="400" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve"> <rect x="75" y="75" width="50" height="50" style="stroke: #3333cc; fill:none;" /> </svg> <svg version="1.1" style="transform:matrix(2,0,0,2,100,100);border:1px solid #00f;" id="testsvg3" preserveAspectRatio="xMinYMin slice" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200" height="200" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve"> <rect x="75" y="75" width="50" height="50" style="stroke: #3333cc; fill:none;" /> </svg>
下面是一些可能对你有帮助的事情
1—创建一个全局SVG容器并设置其尺寸,因为它将成为您的视图端口
2——创建一个单独的g元素来占用整个视口。
3——在g元素内插入所有将显示的元素
平移和缩放
就像在高级元素g上修改transform属性一样简单缩放到100%以上缩放到100以下平移只是平移
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么