是否可以在呈现SVG之前获取SVG文本元素的宽度?

时间:2017-06-16 15:14:30

标签: javascript html svg

在文本元素“渲染”之前,是否可以确定SVG文本元素 的宽度?

换句话说,我通常会在DOM上构建一个SVG图表,如下所示:

var frag = document.createDocumentFragment();
var text = document.createElementNS("http://www.w3.org/2000/svg", "text");
frag.appendChild(text);
text.textContent = "Lorem Ipsum"
...
svg.appendChild(frag);

在这个例子中 - 我经常想知道 之前文本元素的宽度 documentFragment被添加到DOM中,因为这个位置后续元素可能取决于它。

如果我使用这种方法:

var bbox = textElement.getBBox();
var width = bbox.width;
var height = bbox.height;

...然后高度和宽度返回 0 ,除非我检查 AFTER documentFragment已添加到DOM

那么,这可能吗?

我考虑过使用“sizer”元素 - 一个已经存在于DOM中的隐藏元素;我可以设置它的文本然后捕获它的宽度。

但我担心的是性能 - 如果我必须以这种方式测量300个文本元素,那么每次更改sizer的文本时,我是否会重新浏览浏览器?

或者,换句话说 - 有没有办法可以更新该文本元素 的textContent而不用 导致浏览器重绘(例如,通过隐藏该元素,或使用部分:绝对并将其定位在视口外?

提前致谢!

0 个答案:

没有答案