SVG 路径的描边宽度影响 Firefox 中的 getBoundingClientRect() 结果

5 html javascript firefox svg getboundingclientrect

getBoundingClientRect()当涉及具有给定笔画宽度的 SVG 路径时,不同浏览器的实现有所不同,像Firefox 这样的浏览器包括笔画宽度(例如,与 Chrome 不同)。

通过“包括笔划宽度”,我希望边界框包含带有笔划的路径,但没有其他内容。然而,正如您在这个基本示例中所看到的,在 Firefox 中,笔划宽度似乎在整个元素周围创建了一个额外的边框,其值是笔画宽度本身的两倍:

console.log(document.querySelector("path").getBoundingClientRect())
Run Code Online (Sandbox Code Playgroud)
path {
  stroke: black;
  stroke-width: 30px;
}
Run Code Online (Sandbox Code Playgroud)
<svg>
  <path d="M0,20 L300,20"></path>
</svg>
Run Code Online (Sandbox Code Playgroud)

这是上面代码片段的屏幕截图,检查元素:

在此输入图像描述

正如您所看到的,不仅getBoundingClientRect()开发工具检查器得到的边界矩形错误(420x120而不是300x30。值得一提的是,Chrome 和 Safari 将返回300x0,如第一段所述)。

这是预期的行为吗?