SVG 矢量图像动画

SVG vector image animation

我在 Adobe Illustrator 中创建了 3 个矢量图像。

我想用与 gif 相同的方式制作此矢量质量图像的动画,在浏览器 mypage.php <img src="assets/img/logo.svg" alt="" alt="" width="65" height="45"/> 中以 .svg 格式的 3 张图像的快速无限循环序列。

.svg 获取此类动画的最正确方法是什么,我是否必须使用所有给定的方法来创建矢量动画,或者在我的场景中我可以用一些不同的方式来做

对于你想要的,它是 svg 图片这一事实是无关紧要的。

您可以创建一个元素并通过不同的文件制作动画作为背景。

div{
  width: 102px;
  height: 102px;
  border: 1px solid black;
  animation:  rotateImages 1s infinite; 
}

@keyframes rotateImages {
  0%   { background: url("https://www.placecage.com/g/100/100"); }
  32%   { background: url("https://www.placecage.com/g/100/100"); }
  33%  { background: url("https://www.placecage.com/100/100"); }
  65%  { background: url("https://www.placecage.com/100/100"); }
  66% { background: url("https://www.placecage.com/c/100/100"); }
  100% { background: url("https://www.placecage.com/c/100/100"); }
}
<div></div>

有几种方法可以做到这一点。根据您提供的信息,这是一种方法。

我们将帧一个接一个地堆叠起来。然后让它们一次可见。

.sequence {
  position: relative;
}

.sequence img {
  position: absolute;
  top: 0;
  opacity: 0;  /* start all frames invisible */
  animation: cycle 3s steps(1) infinite;
}

/* three images, so each gets made visible for 1/3 of the time */
@keyframes cycle {
  0%  { opacity: 1; }
  33% { opacity: 0; }
}

/* start (ie. show) the second frame 1 sec after the first */
.sequence img:nth-child(2) {
  animation-delay: 1s;
}

/* start (ie. show) the third frame 2 sec after the first */
.sequence img:nth-child(3) {
  animation-delay: 2s;
}
<div class="sequence">
  <img src="https://placeimg.com/300/200/animals"/>
  <img src="https://placeimg.com/300/200/nature"/>
  <img src="https://placeimg.com/300/200/people"/>
</div>

这些图像恰好是 JPEG,但它们是什么类型并不重要。您的 SVG 应该可以工作。

鉴于您有 SVG,您可能会发现将它们合并到一个 SVG 中会更好。将每一帧的内容放在它自己的组中(<g> 元素)。然后使用与上述类似的方法,但一次显示一个组。