Skip to content

鼓励作者:欢迎 star 或打赏犒劳

使用 SVG 做动画

今天发现一个好玩的动画,想当然以为是 GIF 或者 CSS3 的成果,结果这想当然不靠谱,居然是 SVG 写的,于是就网上一堆操作寻找资料,自己再来个 demo

demo 代码及示例

其实 demo 是为了 2.0 准备的

在线示例

html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SVG 动画 demo</title>
  </head>
  <body>
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="200px"
      height="200px"
      viewBox="0 0 100 100"
      fill="#4fc08d"
    >
      <g transform="rotate(180 50 50)">
        <rect x="10.4" y="10" width="12" height="30">
          <animate
            attributeName="height"
            calcMode="linear"
            values="50;80;20;50"
            dur="0.5"
            begin="-0.2s"
            repeatCount="indefinite"
          />
        </rect>
        <rect x="33.8" y="10" width="12" height="66">
          <animate
            attributeName="height"
            calcMode="linear"
            values="50;80;20;50"
            dur="0.5"
            begin="-0.1s"
            repeatCount="indefinite"
          />
        </rect>
        <rect x="57.2" y="10" width="12" height="40">
          <animate
            attributeName="height"
            calcMode="linear"
            values="50;80;20;50"
            dur="0.5"
            begin="-0.3s"
            repeatCount="indefinite"
          />
        </rect>
        <rect x="80.6" y="10" width="12" height="66">
          <animate
            attributeName="height"
            calcMode="linear"
            values="50;80;20;50"
            dur="0.5"
            begin="0s"
            repeatCount="indefinite"
          />
        </rect>
      </g>
    </svg>
  </body>
</html>

animate 相关语法介绍

只介绍用到的,其他的可以看下文的相关链接

  • attributeName: 要变化的元素属性名称

  • calcMode: 控制动画的速度

  • values: 给动画设置多个关键值点

  • dur: 动画的持续时间

  • begin: 动画的延迟时间

  • repeatCount: 动画执行的次数

相关资料

超级强大的 SVG SMIL animation 动画详解SVG 元素参考 | MDN

如有转载或 CV 的请标注本站原文地址