Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SVG 动画


SVG 动画

SVG 元素可以进行动画。

在 SVG 中,我们有四个动画元素可以设置或动画化 SVG 图形

  • <set>
  • <animate>
  • <animateTransform>
  • <animateMotion>

SVG <set>

<set> 元素在指定持续时间内设置属性的值。

在本例中,我们创建一个红色圆形,其初始半径为 25,3 秒后半径将设置为 50。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="25" style="fill:red;">
  <set attributeName="r" to="50" begin="3s" />
</svg>
亲自尝试 »

代码解释

  • <set> 元素中的 attributeName 属性定义要更改的属性。
  • <set> 元素中的 to 属性定义属性的新值。
  • <set> 元素中的 begin 属性定义动画应何时开始。

SVG <animate>

<animate> 元素动画化元素的属性。

<animate> 元素应该嵌套在目标元素内。

在本例中,我们创建一个红色圆形。我们动画化 cx 属性,从 50 到 90%。这意味着圆形将从左向右移动。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="50" style="fill:red;">
    <animate
      attributeName="cx"
      begin="0s"
      dur="8s"
      from="50"
      to="90%"
      repeatCount="indefinite" />
  </circle>
</svg>
亲自尝试 »

代码解释

  • attributeName 属性定义要动画化的属性。
  • begin 属性定义动画应何时开始。
  • dur 属性定义动画的持续时间。
  • from 属性定义起始值。
  • to 属性定义结束值。
  • repeatCount 属性定义动画应播放多少次。

SVG <animate> 冻结

在本例中,我们希望红色圆形在到达其最终位置时冻结(停止)(而不是立即返回到起始位置)。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="100%" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="50" style="fill:red;">
    <animate
      attributeName="cx"
      begin="0s"
      dur="8s"
      from="50"
      to="90%"
      fill="freeze" />
  </circle>
</svg>
亲自尝试 »

代码解释

  • fill="freeze" 属性定义动画在到达其最终位置时应冻结。


SVG <animateTransform>

<animateTransform> 元素动画化目标元素上的 transform 属性。

<animateTransform> 元素应该嵌套在目标元素内。

在本例中,我们创建一个将旋转的红色矩形。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="200" height="180" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" height="110" width="110" style="stroke:green;fill:red">
    <animateTransform
      attributeName="transform"
      begin="0s"
      dur="10s"
      type="rotate"
      from="0 85 85"
      to="360 85 85"
      repeatCount="indefinite" />
  </rect>
</svg>
亲自尝试 »

代码解释

  • attributeName 属性动画化 <rect> 元素的 transform 属性。
  • begin 属性定义动画应何时开始。
  • dur 属性定义动画的持续时间。
  • type 属性定义变换的类型。
  • from 属性定义起始值。
  • to 属性定义结束值。
  • repeatCount 属性定义动画应播放多少次。

SVG <animateMotion>

<animateMotion> 元素设置元素沿运动路径移动的方式。

<animateMotion> 元素应该嵌套在目标元素内。

在本例中,我们创建一个矩形和一个文本。这两个元素都具有相同的路径的 <animateMotion> 元素。

It's SVG! Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="100%" height="150" xmlns="http://www.w3.org/2000/svg">
  <rect x="45" y="18" width="155" height="45" style="stroke:green;fill:none;">
    <animateMotion
      path="M0,0 q60,100 100,0 q60,-20 100,0"
      begin="0s"
      dur="10s"
      repeatCount="indefinite" />
  </rect>
  <text x="50" y="50" style="font-family:Verdana;font-size:32">It's SVG!
    <animateMotion
      path="M0,0 q60,100 100,0 q60,-20 100,0"
      begin="0s"
      dur="10s"
      repeatCount="indefinite" />
</text>
</svg>
亲自尝试 »

代码解释

  • path 属性定义动画的路径。
  • begin 属性定义动画应何时开始。
  • dur 属性定义动画的持续时间。
  • repeatCount 属性定义动画应播放多少次。

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.