【发布时间】:2014-09-10 13:35:10
【问题描述】:
我刚刚遇到了一种情况,我想将 SVG 形状以不同的比例放置在彼此的中心。 例如在圆的中心放置一个矩形或三角形或任何其他形状。
为此,我遇到了一些解决方案,但仅适用于某些具有 x 和 y 属性的形状,例如矩形。 例如,我将一个矩形放置在一个圆的中心,如下所示:demo
var circle =document.getElementById('c1');
var rect = document.getElementById('r1');
var group = document.getElementById('g1');
var BBox = rect.getBBox();
rect.setAttribute('x',-(BBox.width/2));
rect.setAttribute('y',-(BBox.height/2));
rect.setAttribute('transform','scale(2)');
circle.setAttribute('transform','scale(1)');
group.setAttribute('transform','translate(200,150)');
但正如您所见,它设置了矩形 x 和 y 属性。但是,例如,如果我有一个三角形,它就没有任何 x 或 y 属性,因为它是一条路径。 我认为,如果它是设置三角形或任何其他形状的边界框 x 和 y 属性的解决方案,它将像我在 demo 中所做的那样工作。
BBox.setAttribute('x',-(BBox.width/2));
BBox.setAttribute('y',-(BBox.height/2));
但它并没有按预期工作,因为我在设置 BBox 属性时可能犯了一些错误。
现在我的问题是,是否有任何解决方案可以设置边界框属性,或者是否有任何其他更好的解决方案可以将形状置于另一个形状的中心?
谢谢。
【问题讨论】:
-
嗯,我今天没时间测试,但你的代码看起来不错。除了我认为它是 BBox.setAttribute('y',-(BBox.height/2));而不是宽度,不是吗?
-
谢谢。你说得对,我刚改了
-
而且我认为 BBox 没有 setAttribute 方法。它必须被检查..
-
是的,我刚刚提到它不能正常工作,我想知道有没有办法设置 BBox 属性,或者这是否是一个正确的解决方案。
-
对不起,我没有花时间好好阅读。 :/ 我认为你需要使用对象的视口(在他的视口中设置对象并移动视口)。
标签: javascript html css svg