创建“纸张”对象后,使用 SnapSVG 获取其大小的正确方法是什么?
我的 HTML 看起来如下:
<div id="myContainer" style="width: 900px; height: 100px" />
然后是 JavaScript 代码:
function initViewer(elementId) {
var element, elementRef, snap;
elementRef = '#' + elementId;
element = $(elementRef);
element.append('<svg style="width: ' + element.width() + 'px; height: ' + element.height() + 'px; border: solid 1px black;"/>');
snap = Snap(elementRef + ' svg');
console.log(snap.getBBox());
}
我在这里观察到的是,所有属性的边界框都为“0”,因此我不能依赖此处的边界框值。有没有什么方法可以做到这一点,而不必转到父元素?
我本质上想要的是 SVG 的宽度和高度,这样我就可以为视图绘制适当大小的形状。
JS Fiddle,说明了这个问题:https://jsfiddle.net/ajmas/kdnx2eyf/1/ https://jsfiddle.net/ajmas/kdnx2eyf/1/
画布上的 getBBox() 返回包含该画布上所有元素的边界框。由于 SVG 中没有元素,因此它返回全 0。
但 SVG 元素就像任何其他 DOM 元素一样 - 您可以通过多种不同的方式获取其宽度和高度。您可以通过 ID 或其他方式检索对象并使用 .offsetWidth 或 .offsetHeight。
您还可以遍历对象本身。我不知道这是否适用于所有浏览器,但如果您确实想使用 snap 对象,您可以这样做:
snap=Snap(elementRef + ' svg');
snap.node.clientHeight
snap.node.clientWidth
但你也可以使用它包含的 div 设置它的高度和宽度。为什么不能只使用 element.width() 和 element.height() 呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)