【发布时间】:2013-10-15 10:25:06
【问题描述】:
我想在 SVG 中的文本周围放置一个矩形。
我知道文本的高度(text 元素的font-size 属性)。但宽度取决于实际内容。使用 getBBox() 或 getComputedTextLength() 应该可以。但这仅在渲染后有效。
有没有办法以其他方式指定?例如定义相对于其他值的x 和width 属性?我在 SVG 规范中没有找到类似的东西。
【问题讨论】:
-
渲染后测量有什么问题?
-
@RobertLongson 代码复杂度和视觉跳跃。我正在动态生成整个文档。所有对象都应该准备好,然后添加到文档中,然后渲染。在渲染后计算时,我必须渲染未完成的对象,然后在渲染后更改它们。这会导致视觉跳跃。
-
将您的代码添加到问题中?您是否尝试获取尚未插入到文档中的元素的 bbox 和文本长度?
-
视觉跳跃很容易修复。将事物设为可见性=“隐藏”,然后在完成后取消隐藏。
-
@ErikDahlström 我还没有任何代码。我仍在寻找它。你是对的,我想获得尚未插入文档的元素的 bbox 和/或文本长度。由于这是不可能的,我正在寻找一些解决方法。也许有属性值来指定与任意其他元素的长度相关的长度。