我正在尝试使用animate
标签对svg
path
进行动画处理,参考自css tricks的这篇教程。我可以使用css关键帧来动画化路径,结果如下:
#mySvg path{
animation: scale-path 10s ease-in-out infinite;
}
@keyframes scale-path {
50% {
d: path('M1036,540L883,540L883,693Z');
}
}
<svg id="mySvg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
x="0"
y="0"
width="100%"
height="100%"
viewBox="0 0 1920 1080"
preserveAspectRatio="none">
<path d="M1045,520L1173,558L1184,393Z"
fill="lightblue"
stroke="#eee9ea"
stroke-width="1.51" />
</svg>
但问题是我无法使用animate
标签实现相同的动画效果(将会有很多带有不同动画的path
标签)。我不确定这是否是正确的语法:
<svg id="mySvg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
x="0"
y="0"
width="100%"
height="100%"
viewBox="0 0 1920 1080"
preserveAspectRatio="none">
<path d="M1045,520L1173,558L1184,393Z"
fill="lightblue"
stroke="#eee9ea"
stroke-width="1.51">
<animate
attributeName="d"
from="M1045, 520L1173, 558L1184, 393Z"
to="M1036; 540L883; 540L883; 693Z"
dur="10s"
repeatCount="indefinite"
values="M1036; 540L883; 540L883; 693Z"
keyTimes="0.5;" />
</path>
</svg>
;
分隔的values
表示 0%、50% 和 100% 吗? - SilverSurferM1045, 520L1173, 558L1184, 393Z
,你可以有不同的值,像这样用;
分隔,就像在values属性中一样。 - Temani Afifkeyframes %
这个东西? - SilverSurferkeyTimes
来实现。但是,如果您的关键帧在时间“0”和时间“1”之间均匀分布,则无需使用keyTimes
指定时间。 - Paul LeBeau