javascript - 如何使用 JavaScript 获取缩放后的 SVG 元素的宽度?

标签 javascript svg width

如果我有内联 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 返回 245不考虑缩放比例。

最佳答案

请检查这个 fiddle http://jsfiddle.net/T723E/ .单击矩形并注意 firebug 控制台。 在这里,我硬编码了一个数字 .3,它是包含 svg 节点/1000 个用户单元的 div 的 300 像素宽度。

看到赏金后,这是我返回的函数,无需太多(没有数学我不确定。)maths.Use matrix.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))

请查看此 fiddle 以获取完整代码 http://jsfiddle.net/b4KXr/

关于javascript - 如何使用 JavaScript 获取缩放后的 SVG 元素的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197118/

相关文章:

javascript - 如何使用给定的时间数组更改 setTimeout 时间

javascript - 可靠地检测 <img> 标签对 SVG 的支持

css - 调整宽度时如何固定DIV高度?移动/桌面/PC 浏览器兼容

javascript - 3d 鱼眼 - 如何在鼠标悬停时使条形变宽?

javascript - 如何在 promise 解决后呈现模板?

javascript - 使用Javascript左右摆动图像?

html - 拖动旋转 SVG :g group

javascript - 使用 JavaScript 操作 SVG?

jquery - 使用 jQuery 查找完整显示元素所需的最小宽度?

javascript - 在 for 循环中从 UL 中删除 LI (JS)