d3 v.4 + x轴刻度标签在过渡时位置不正确

时间:2018-12-19 01:07:58

标签: d3.js svg dimple.js

从3.x系列d3切换到模块化4.x +版本时尝试调试问题。我正在使用基于d3的dimple.js进行开发。

通过过渡重新绘制图形时出现问题, x轴刻度标签放错了位置。使用旧版本不会发生这种情况。 JSFiddle具有正确的旧行为。 JSFiddle具有不正确的新行为。

问题似乎是rotate的第三个参数:正确的标签具有非零值,例如

transform="rotate(90,0,231.90625) translate(-5, 0)"

放错位置的标签的第三个参数为0。

transform="rotate(90,0,0) translate(-5, 0)"

我在尝试调试时发现的一些笔记:

  • 标签仅在使用d3过渡时放错位置。酒窝通常使用 ease-cubic-in-out,但是如果开发人员在draw()中指定0毫秒,则过渡将被完全跳过,标签将始终正确显示。
  • 酒窝通过在getBBox()元素上调用text并使用结果高度来填充旋转值:请参见dimple 2.2 draw()的第300行和第 dimple 2.3 draw()中的301。使用新版本时,边界框在元素上将为空,这些元素将被错误定位:SVGRect {x: 0, y: 0, width: 0, height: 0}
  • 我试图确定元素之间的差异 他们是创建的,不确定这是否是差异的根源 但是我还是失败了。 (我相信它发生在功能 在:https://github.com/d3/d3/blob/v3.5.17/d3.js中的第8983行以及 https://github.com/d3/d3-axis/blob/master/src/axis.js
  • 中的第47行
  • 只需重申一下,依赖d3 3.x的dimple 2.2及以下版本, 标签过渡效果很好。只有升级到酒窝时 2.3和d3 4+,显示不正确的行为。显然酒窝可能有所不同,但经过 代码(在酒窝版本之间几乎相同)我相信它是d3 引入了重大变化。

0 个答案:

没有答案