侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论
Web

获取SVG元素的有效大小

barwe
2021-11-19 / 0 评论 / 1 点赞 / 1,666 阅读 / 622 字
温馨提示:
本文最后更新于 2023-06-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一般来讲,一个 svg 元素的结构是这样的:

<svg xmlns="http://www.w3.org/2000/svg" width="1400" height="1000" style="font-family: Arial">
    <g></g>
    <defs></defs>
</svg>

第一个 g 标签的尺寸就是该 svg 画板中实际内容占据的大小。

这个 g 标签的尺寸可以通过 getBBox() 方法获取:

const svg = document.getElementByTag("svg")[0];
const {x, y, width, height} = svg.getBBox();

其中:

  • x 是g元素相对于画板左上角在水平方向的偏移
  • y 是g元素相对于画板左上角在竖直方向的偏移
  • width 是浏览器渲染后g元素的实际宽度
  • height 是浏览器渲染后g元素的实际高度

所以svg元素的有效内容尺寸为 width x height,考虑到内容偏移并重置svg元素的大小:

svg.setAttribute("width", `${width + x}px`);
svg.setAttribute("height", `${height + y}px`);

getBBox() 方法还可以测量svg元素中的文本尺寸。

1

评论区