将SVG元素的大小调整为其内容

use*_*695 9 javascript jquery svg

我想将SVG-Element的尺寸调整为其内容.

JSfiddle: http ://jsfiddle.net/4pD9N/

我在这里举个例子.SVG应该"收缩"以适应每侧的元素+ 10px边距.换句话说:我想裁剪未使用空间的svg ...

我知道我必须使用getBBox.但是如何计算总宽度和高度?

小智 14

默认情况下,SVG绘图的原点与容器的原点相同.这意味着(0,0)您的绘图位于SVG元素的左上角.要使内容居中,您应该将绘图相对于容器进行转换.可以通过相对于方法的结果修改SVG元素的viewBox属性(预期的四个值"minx miny width height":)来实现getBBox().http://jsfiddle.net/3cp3c/上的实例.

svg.setAttribute("viewBox", (bbox.x-10)+" "+(bbox.y-10)+" "+(bbox.width+20)+" "+(bbox.height+20));
svg.setAttribute("width", (bbox.width+20)  + "px");
svg.setAttribute("height",(bbox.height+20) + "px");
Run Code Online (Sandbox Code Playgroud)


use*_*987 7

var svg = document.getElementsByTagName("svg")[0];
var bb=svg.getBBox();
var bbx=bb.x;
var bby=bb.y;
var bbw=bb.width;
var bbh=bb.height;
var vb=[bbx,bby,bbw,bbh];
svg.setAttribute("viewBox", vb.join(" ") );
Run Code Online (Sandbox Code Playgroud)