SVG路径动画在不同浏览器显示效果不一致怎么办?
我正在用SVG做加载动画,给路径加了stroke动画,代码看起来没问题,但Chrome显示正常,Firefox却有明显抖动,Safari直接偏移了。折腾了半天,但效果还是不对,求大神指点!
代码是这样的:
<svg viewBox="0 0 50 50">
<path d="M 25 3 L 38 25 L 25 47 L 12 25 Z"
stroke-dasharray="100"
stroke-dashoffset="100"
animation="draw 2s linear infinite">
</svg>
我试过调整dasharray数值,但感觉像是不同浏览器计算路径长度的方式不一样。有没有什么兼容性的设置或者更好的实现方式?
stroke-dasharray和stroke-dashoffset依赖的路径长度在不同浏览器里算得不太一样。解决办法是手动计算路径的实际长度,然后用这个值来设置
stroke-dasharray和stroke-dashoffset,这样能保证一致性。具体操作的话,可以用JavaScript来获取路径长度,代码如下:这样一来,无论什么浏览器,都能拿到准确的路径长度,动画效果也会一致了。
另外,动画属性
animation="draw 2s linear infinite"建议换成CSS写法,兼容性会更好一些。比如这样:最后提醒一下,记得检查SVG的
viewBox和路径坐标是否对齐,有时候偏移问题可能是因为坐标系没对好。我之前就踩过这个坑,调了半天才发现是viewBox的问题,真是又气又好笑。希望这些方法能帮你解决问题!如果还有啥不清楚的,随时交流。