SVG中的动画

本文介绍了SVG中的五种动画元素,包括<animate>、<set>、<animateMotion>、<animateColor>和<animateTransform>,并详细解释了如何使用这些元素及各种属性来控制动画的时间和过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVG中的动画元素有五个,它们都可以随着时间的变化而改变SVG元素的属性或样式值,如下所示:

<animate>:改变数值的属性或样式的值;

<set>:改变非数据值的属性或样式的值,如visibility属性等;

<animateMotion>:沿着某路径移动SVG元素获得动画效果;

<animateColor>:改变某些元素与颜色有关的属性或样式的值;

<animateTransform>:改变SVG元素进行坐标变换时候的动画效果;

 

attributeName="<attributeName>":批明所作用的SVG元素中哪个属性或样式需要产生动画效果。

attrbuteType="<XML|CSS|auto>":指明产生动画效果的属性或样式值是哪个命名空间定义的。“XML”表示“attributeName”的值是默认XML命名空间里定义的XML属性名;“CSS”表示“attributeName”的值是默认CSS属性的名称;“auto”是默认值,解析器解析时先在CSS属性列表中查找是否有匹配“attributeName”的属性名,然后再在XML的命名空间里找

1.与时间控制相关的常用属性

begin="<clock-time-value>|wallclock-sync-value|indefinite|eventName":定义动画的开始时刻。

a.时间偏移值,如3S表示3秒后开始播放动画(hh:mm:ss.xxxx)

b.现实世界中的时间,定义后要保证SVG文档要在这个时间之前打开

c.Endefinite:表示这个动画不会自动开始,需要使用动态脚本调用"beginElement()"方法或指向动画元素

d.eventName:表示在某个事件触发时开始播放动画。如begin="mousedown"

   1.dur="<clock-time-value>|indefinite":定义动画的持续时间

   2.end="<clock-time-value>|indefinite":定义动画的结束时间

   3.restart="always|whenNotactive|never":是否重播

  4.repeatCount:重复播放次数   indefinite表示无限重播

  5.repeatDur:定义动画播放总时间

  6.fil="freeze|remove":定义动画播放完毕后是停留在播放的终点还是回到起始位置

2.与过程控制相关的常用属性

from="<value>":定义该动画元素所作用的属性值在开始变化时的值

to="<value>":定义该动画元素所作用的属性值在结束变化时的值

by="<value>":定义该动画元素所作用的属性值每次变化的步长值

calcMode="discrete|linear|paced|spline":定义动画关键点直接过渡的插值计算方式

                discrete表示不采用插值算法,动画是从一个关键点跳跃到另外一个关键点

                linear表示采用线性插值算法,这是<animate>元素和<set>元素采用的默认插值算法

                paced表示采用在埋单上均匀变化的方法来插值

                spline表示采用三次贝塞尔曲线的方式来插值,需要"KeySplines"属性的配合

 

例子1:

<rect x="50" y="50" width="100" height="50">

      <animate    attributeType="XML" attributeName="x"

                      from="50" to="300" dur="3s"  begin="3s"

                      restart="always"   repeatCount="3" >

     </animate>

</rect>

例子2:

<text  x="0" y="0"  font-size="37"  visibility='hidden"  stroke="black"   stroke-width="2" >

      <animateMotion  path="M0,0 L50,50 L100,150"  begin="1s" dur="5s" fill="freeze" rotate="auto"/>

</text>

自己可能试着保存SVG文件运行看看效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值