在文本元素“渲染”之前,是否可以确定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而不用 导致浏览器重绘(例如,通过隐藏该元素,或使用部分:绝对并将其定位在视口外?
提前致谢!