如果我有内联 SVG,包括已缩放的元素......
<g transform="scale(sX,sY)">
<rect id="myElement" x="107" y="32" width="245" height="31" stroke="#C6C3C6" stroke-width="1px" />
</g>
...或者是在一个<svg>
元素与一个viewBox
属性:
<svg viewBox="20 20 5000 1230">
<g transform="scale(sX,sY)">
<rect id="myElement" x="107" y="32" width="245" height="31" stroke="#C6C3C6" stroke-width="1px" />
</g>
<svg>
...我如何以编程方式找到新的缩放宽度(以像素为单位)myElement
- 无需手动检测缩放比例并进行数学计算?迄今为止myElement.getBBox().width http://www.w3.org/TR/SVG/types.html#__svg__SVGLocatable__getBBox回报245
不考虑缩放比例。
请检查这个小提琴http://jsfiddle.net/T723E/ http://jsfiddle.net/T723E/。单击矩形并注意 Firebug 控制台。
这里我硬编码了一个数字 .3,它是包含 svg 节点/1000 个用户单位的 300px 宽度的 div。
看到赏金后,这是我返回的函数,无需太多(没有数学,我不确定。)maths.Usematrix.d
用于获取缩放高度
var svg = document.getElementById('svg');
function getTransformedWidth(el){
var matrix = el.getTransformToElement(svg);
return matrix.a*el.width.animVal.value;
}
var ele = document.getElementById('myElement_with_scale')
console.log("scale width----", getTransformedWidth(ele))
请查看这个小提琴以获得完整的代码http://jsfiddle.net/b4KXr/ http://jsfiddle.net/b4KXr/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)