我认为这是Chrome中的错误,因为它似乎在Firefox中可以正常工作,但是我希望有人可以推荐一种解决方法(如果这是我的错,请告诉我哪里出了问题)。
我试图以类似于此示例的方式将标签放入和弦图的组弧中:
http://bost.ocks.org/mike/uberdata/:
我正在使用textPath
来实现此目的,就像示例一样。我的情况的区别在于,我正在运行一个过渡,以在创建弧时打开弧,并在数据更改时调整弧的大小。当我在由path
引用的textPath
上使用过渡效果时,结果是文本不会立即显示在Chrome上。它按预期出现在DOM中,当我执行诸如调整浏览器缩放之类的操作时,文本就会弹出。
这是一些显示此问题的示例代码:
http://bl.ocks.org/3148920
如果在路径过渡上设置transition.each("end",...)
并触摸textPath上的属性,则会使文本出现。但是,当我调整弧的大小时,这对我没有帮助,在此期间,我希望文本与路径一起浮动。在Firefox上可以使用,但在Chrome上可以保留文字。
有关如何使其正常工作的任何想法?
最佳答案
我在这里分叉并修正了您的示例:
http://bl.ocks.org/3151228
您在WebKit浏览器中触发了两个错误:
由于WebKit处理区分大小写的元素名称的方式存在错误,因此无法选择textPath元素。请参见bug 83438。不幸的是,WebKit没有显示修复此错误的迹象。
单独更新路径元素不会触发引用此路径的从属元素的重绘。因此,即使我们更新路径,引用的textPath元素也不会重绘。要解决此更新错误,我们创建了一个自定义过渡,该过渡将textPath的xlink:href属性重复设置为“ #path”。我不确定是否已经为此提交了错误。
注意:在动画开始时,文本在弧的开始处被卷起,难以阅读。根据您要完成的工作,您可以改为use the arc to clip the text,以便在弧扩展时显示文本。