【发布时间】:2016-08-14 00:11:13
【问题描述】:
我创建了一个非常简单的 SVG 动画,其中包含两个圆圈,一个实心圆圈和一个虚线圆圈。对外部虚线圆进行 360 度旋转的动画非常简单。
我想尝试的是通过缩小 10% 然后回到 100% 来让内部的实心圆“脉动”。
问题是,到目前为止,我为 animateTransform 找到的所有文档都只涉及 2 个“关键帧”,从到到。因此,圆圈将从 100% 变为 90%,然后会重复并跳回 100%。我正在寻找它来“乒乓”,去100->90->100->90等。
这可以用原生 SVG 动画(即没有 CSS 和库)来完成吗?
<svg xmlns="http://www.w3.org/2000/svg" width="106" height="106" viewBox="0 0 106 106" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<circle id="a" cx="50" cy="50" r="50"/>
<mask id="b" width="100" height="100" x="0" y="0" fill="white">
<use xlink:href="#a"/>
</mask>
</defs>
<g fill="none" fill-rule="evenodd" transform="translate(3 3)">
<use stroke="#979797" stroke-width="12" mask="url(#b)" stroke-dasharray="6 9" xlink:href="#a">
<animateTransform attributeName="transform"
attributeType="XML"
type="rotate"
from="0 50 50"
to="360 50 50"
dur="10s"
repeatCount="indefinite" />
</use>
<circle cx="50.5" cy="50.5" r="36.5" fill="#D8D8D8"/>
</g>
</svg>
【问题讨论】: