【问题标题】:Animate an SVG sprite with CSS使用 CSS 为 SVG 精灵设置动画
【发布时间】:2018-07-13 20:53:58
【问题描述】:

我有一些 svg 精灵,想在网站上制作动画。 使用这些文件的推荐方法是什么?

首先,这是我的Hunter (raw covert) - 我将其作为 eps 并通过 indesign 转换为 svg。

我的条目是通过 css 通过更改关键帧动画中的当前图片来对其进行动画处理。

想法:

  1. 我找到了this精彩的博文,其中当前图像是通过锚点选择的
  2. 使用背景位置

所以我已经在我的文件中识别出不同的图像,给它们一个 ID 并隐藏其他图像。您可以与 #a #b #c ... 互连。

Hunter Image #a

-> 问题:精灵上的位置仍然不同。我还必须更改背景位置。

https://jsfiddle.net/roest/035r0ozq/

0% {
    background-image: url(http://elefantenjagdverein.de/server/elephants/hunter/hunter.hidden.svg#a);
  }
  20% {
    background-image: url(http://elefantenjagdverein.de/server/elephants/hunter/hunter.hidden.svg#b);
  }

条目 2 - 像普通精灵一样使用背景位置... 但有些东西似乎还是坏了。

如果您使用带有普通精灵的getspritexy.com,您会在“生成的精灵图像”中看到选择。使用我的 svg,您会看到多个图像... 我的 testFiddle 中的结果相同:

https://jsfiddle.net/roest/4bbnnm9t/

0% {
        background: url('http://elefantenjagdverein.de/server/elephants/hunter/hunter.svg') no-repeat -83px -15px;
        width: $width;
        height: $height;
      }
      20% {
        background: url('http://elefantenjagdverein.de/server/elephants/hunter/hunter.svg') no-repeat -131px -15px;
        width: $width;
        height: $height;
      }

我的哪个想法是最好的,我怎样才能让我的猎人正确地制作动画?

【问题讨论】:

  • 我在 Chrome 和 Firefox 中尝试了你的小提琴,但它不起作用。什么都没有显示。
  • 是的,因为我使用了从 getspritexy 生成的原始宽度和高度。如果我增加宽度,您会看到我的图像位置发生变化,但当然不再适合背景位置。 jsfiddle.net/roest/4bbnnm9t/1

标签: css animation svg


【解决方案1】:

要让您的帧从一个位置步进到另一个位置而不滑动,您可以使用step-end 进行计时功能。

animation: hunter-animation 2.5s step-end both infinite;

见:https://jsfiddle.net/4bbnnm9t/3/

现在它已经开始了,您只需调整位置以使其正确。

【讨论】:

  • 另外,不需要到处重复背景图像和高度/宽度。只需调整background-position:jsfiddle.net/4bbnnm9t/4
  • 非常感谢@Sphinxxx。我已经更新了小提琴,所以动画适合正确。 jsfiddle.net/roest/4bbnnm9t/5 - 仍然有一些摆动我无法摆脱,因为它小于一个像素。所以我的问题的答案是:您必须手动查找背景位置。如果您调整图像高度/宽度的大小,您需要再次找到它,如果它因为设计师的工作不是每毫秒而摆动,您必须忍受它或制作新的精灵?
猜你喜欢
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多