【发布时间】:2014-06-02 06:26:33
【问题描述】:
我需要计算 svg 文本元素的高度和宽度。有没有办法在不实际将其添加到我页面的 DOM 的情况下这样做?我只需要度量而不是实际元素。
我既没有使用 d3 也没有使用 Raphael,而只使用了纯 JavaScript。 (也许我应该使用前者之一进行计算?)
我所追求的只是 PHP 中的 imagettfbbox 之类的函数,但在纯 JavaScript 中。有这样的事吗?还是写起来容易?
因为我实际上并没有使用文本元素,所以添加和隐藏它们对我来说似乎很奇怪(我还在某处读到 Firefox 在计算隐藏元素的 bbox 时遇到问题,Calculating vertical height of a SVG text)。但也许这是唯一的出路?在这种情况下,我必须使用不透明度吗?之后我会以某种方式销毁元素吗?
【问题讨论】:
-
为什么将它添加到页面的 DOM 会成为问题?
-
你是如何创建文本元素的?您是在使用像 d3.js 或 Raphael 这样的库,还是在使用 document.createElement(),或者完全不同的东西?给我们一些背景
-
感谢您的 cmets。我试图提供更多背景信息。
-
可以使用canvas元素的measureText方法。
-
不幸的是,使用 measureText 我似乎失去了测量
H<tspan style="baseline-shift:sub;font-size:5px">2</tspan>O的能力,它可以在 SVG 文本元素中使用。所以这个解决方案似乎不起作用。