我不确定您从哪里获得您正在使用的笔划破折号转换版本的代码,但我可以看到为什么它会在某些浏览器中产生异常行为:
path1.attr("stroke-dasharray", totalLength + " " + totalLength)
.attr("stroke-dashoffset", totalLength)
.transition()
.duration(duration)
.ease("linear")
.attr("stroke-dashoffset", 0);
您正在定义一个破折号图案,该图案由一条实线组成的整个线条长度,后跟一个也是线条长度的间隙,最初偏移线条的长度并过渡到零偏移。有了这些信息,并且不幸的是,规范中对stroke-dashoffset 属性的模糊定义(“'stroke-dashoffset'指定了到破折号图案的距离以开始破折号”),我真的不知道应该是什么结果.
尝试使用:
path1.attr("stroke-dasharray", 0 + " " + totalLength)
.transition()
.duration(duration)
.ease("linear")
.attr("stroke-dasharray", totalLength + " " + 0);
这告诉它以零长度的破折号和路径的整个长度的间隙开始,并过渡到在路径的整个长度上具有破折号和零长度的间隙。我没有 Linux 来测试它,但我怀疑它应该可以在任何地方工作。