【问题标题】:How to access offsets of inner SVG elements如何访问内部 SVG 元素的偏移量
【发布时间】:2016-12-13 21:06:58
【问题描述】:

我有一些 SVG 文件,我会使用标签将数百个这些 SVG 文件放在 HTML DOM 中。 SVG 文件包含内部元素,例如 .如何访问这些内部元素的偏移量?这是一个示例 SVG 文件的内容:https://jsbin.com/tapedam/edit?html,output

访问偏移量对我有何帮助?

通过访问偏移量,我将能够维持与其他 SVG 对象的连接,即使它们被移动到 DOM 中的任何位置。

谢谢, 阿伦

【问题讨论】:

  • @Robert Longson,如果我的问题不清楚,我很抱歉。我想访问 DOM 中内部 SVG 元素的偏移量,而不是 SVG 对象。

标签: javascript html dom svg


【解决方案1】:

获取对您感兴趣的元素的 DOM 引用,然后您可以调用以下函数之一:

getBBox()

返回元素在本地 SVG 坐标中的边界框。请注意,对元素或其祖先的任何变换都会影响返回的坐标值。

getBoundingClientRect()

返回元素在浏览器坐标中的边界框。但是请注意,这些坐标可能无法直接用于创建新的 SVG 元素。这是因为 SVG 可能具有不同的比例,或者元素可能具有变换。

如果你需要在本地SVG坐标和屏幕坐标之间进行转换,那么有functions for that also

【讨论】:

  • 谢谢大家。我正在处理你的建议。会及时向大家发布。这里的挑战是 SVG 文件位于 <object> 标记内,我可能会收到跨源帧错误。这也是我正在测试的屏幕截图 [链接] (ibin.co/35FOXOHj9J0U.png)。正如我之前所说,我想要 <svg> 内的 <line> 元素的偏移量@
  • 在分析了各种备选方案后,我意识到与其使用 标签,不如直接在 SVG 画布中添加 SVG 元素。这样我就会有更多的控制力和灵活性。我可能还必须使用:getBBox() 和 getBoundingClientRect() 来获取偏移量。您可以暂时关闭此线程,因为已解决。
猜你喜欢
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
相关资源
最近更新 更多