【问题标题】:Why are my SVG bezier curves broken in Firefox?为什么我的 SVG 贝塞尔曲线在 Firefox 中被破坏?
【发布时间】:2015-12-04 13:42:20
【问题描述】:

我今天遇到一个问题,我创建的图表在通过 getPointAtLength 创建时无法在 Firefox 中运行。这是一个显示问题的小提琴:

http://jsfiddle.net/xfpDA/9/

注意 javascript 顶部的 cmets。

SVG路径的相关部分是:

C189.5,423.237,266.965,390.696,266.965,390.696

这在 Chrome 和 IE 中完美运行,但 Firefox 直接跳过曲线并关闭路径。

然而,曲线的微小变化就足以解决问题:

C189.5,423.236,266.965,390.696,266.965,390.696
             ^

为什么将该值更改千分之一会在漂亮的曲线和损坏的 SVG 之间产生差异?

编辑:该坐标不是唯一可以更改以“修复”问题的坐标,因此 Firefox 似乎不能很好地处理高精度曲线值。

【问题讨论】:

  • 这很奇怪。我观察到 423.2369842529297 和 423.237014770507 之间的任何值都会触发该行为,如果这可以提供任何线索来说明原因。
  • 此外,我应该将它包含在主帖中,您也可以更改其他一些坐标以“解决”问题。

标签: javascript html firefox svg


【解决方案1】:

Firefox 在某些情况下无法计算曲线的长度(例如 delta=0/0)。因此,该路径部分的结果是 NaN/0/undefined,因此不会添加到总长度中,并且 getPointAtLength 的域更小。

【讨论】:

  • 太棒了。由于getTotalLength 返回NaN,我看到图表的其他部分完全消失了。我发现了一份与该问题相关的错误报告 (bugzilla.mozilla.org/show_bug.cgi?id=972515),但找不到关于此特定问题的报告。
猜你喜欢
  • 2017-11-18
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多