📜  SVG动画(1)

📅  最后修改于: 2023-12-03 15:35:12.103000             🧑  作者: Mango

SVG动画

SVG(Scalable Vector Graphics)动画是在Web应用程序和移动应用程序中广泛使用的一个强大的交互式图形技术。SVG动画基于XML语法,具有可伸缩性和可编辑性。使用SVG动画可以使Web应用程序和移动应用程序更加生动和吸引人。

基本概念

SVG动画的基本概念包括:

  1. 元素:SVG文档中的所有图形元素,如矩形、圆形、文本等都是SVG元素。
  2. 属性:元素的属性用于指定其外观、位置和大小等信息,如stroke(描边)、fill(填充)、x、y等。
  3. 动画:SVG动画就是在文档中使用属性值变化来创建动画效果。
动画类型

SVG动画主要有两种类型:

  1. SMIL动画:SVG1.1中的标准动画,使用XML文档和SVG元素定义动画,可以实现高级动画效果,但浏览器支持较差,现在已不被推荐使用。
  2. JavaScript动画:较为流行的动画方式,使用JavaScript代码操作SVG元素的属性值实现动画效果,支持性较好,可以在大多数现代浏览器中正常运行。
实现步骤

使用SVG动画实现交互式图形效果的步骤如下:

  1. 在HTML文档中插入SVG元素。
  2. 使用CSS给SVG元素设置样式。
  3. 使用JavaScript操作SVG元素的属性值,实现动画效果。
代码示例
<svg width="200" height="200">
  <circle id="myCircle" cx="50" cy="50" r="40" fill="#ff0000" />
</svg>

<script>
  // 获取SVG圆形元素
  const circle = document.getElementById('myCircle');

  // 定义属性值动画效果
  const animation = circle.animate(
    [
      // 起始状态
      { cx: '50', cy: '50', r: '40', fill: '#ff0000' },
      // 中间状态
      { cx: '150', cy: '150', r: '20', fill: '#00ff00' },
      // 结束状态
      { cx: '100', cy: '100', r: '50', fill: '#0000ff' }
    ],
    {
      // 动画持续时间
      duration: 2000,
      // 动画重复次数
      iterations: Infinity,
      // 动画速度曲线
      easing: 'linear'
    }
  );
</script>

以上的代码创建了一个SVG圆形元素,并使用JavaScript定义了一个属性值动画效果,使圆形元素在2秒内从原始状态逐渐变化到目标状态,然后无限循环。