我们正在开发一个相当复杂的场景,其中有很多移动部件,直到现在都没有涉及任何SVG动画。
一切都很顺利,性能良好,直到我们引入了一个带有几条虚线的SVG,并使用stroke-dashoffset属性进行了动画处理。
在Edge或Firefox中没有任何区别,但在Chrome中,整个场景的动画变得卡顿和缓慢。
我们甚至尝试了两种方法来达到同样的目的 - CSS关键帧和SVG元素内的SMIL - 但两者的性能都同样差。
我们是否遗漏了Chrome的性能技巧?
编辑:示例
标记:
一切都很顺利,性能良好,直到我们引入了一个带有几条虚线的SVG,并使用stroke-dashoffset属性进行了动画处理。
在Edge或Firefox中没有任何区别,但在Chrome中,整个场景的动画变得卡顿和缓慢。
我们甚至尝试了两种方法来达到同样的目的 - CSS关键帧和SVG元素内的SMIL - 但两者的性能都同样差。
我们是否遗漏了Chrome的性能技巧?
编辑:示例
标记:
.stream {
animation: stream 10s infinite;
}
@keyframes stream {
100% {
stroke-dashoffset: 100;
}
}
<svg version="1.0" id="streams" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 225.32 66.19" enable-background="new 0 0 225.32 66.19" xml:space="preserve">
<path class="stream" fill="none" stroke="#000" stroke-width="1.75" stroke-linecap="round" stroke-miterlimit="10" stroke-dasharray="3,4" d="M107.38,50.54c0,0-6.78-84.52-106.51-22.2" />
<path class="stream" fill="none" stroke="#000" stroke-width="1.75" stroke-linecap="round" stroke-miterlimit="10" stroke-dasharray="3,4" d="M110.49,45.31c-0.63-13.01-4.56-44.87-27.83-43.8c-27.6,1.27-37.33,39.66-38.49,60.34"/>
<path class="stream" fill="none" stroke="#000" stroke-width="1.75" stroke-linecap="round" stroke-miterlimit="10" stroke-dasharray="3,4" d="M180.63,59.88c-0.69-9.65-3.6-30.18-15.76-45.51C148.44-6.34,131.85,2.22,128.87,5c-2.89,2.7-12.81,7.14-14.28,42"/>
<path class="stream" fill="none" stroke="#000" stroke-width="1.75" stroke-linecap="round" stroke-miterlimit="10" stroke-dasharray="3,4" d="M118.59,45.41c2.4-10.18,9.9-31.97,30.87-37.59c26.03-6.98,55.13,9.32,72.02,19.37"/>
</svg>