本文作者: jsweibo
本文链接: https://jsweibo.github.io/2020/01/02/SVG%E4%B8%AD%E7%9A%84animate%E5%85%83%E7%B4%A0/
摘要
本文主要讲述了:
- 作用
- attribute
正文
作用
编写 SVG 动画
示例:
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
attribute
attributeName
指定在动画过程中需要更改的属性名称
from
属性的初始值
如果不指定,默认为父元素的值
by
结束时相对于初始值的偏移值
示例:从100到150
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
to
属性的结束值
begin
动画的开始时间
默认值为0s
如果没有时间单位,默认为s
0s为 SVG 加载完成的时候
示例:
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
事件
示例:鼠标左键单击后开始动画
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
示例:鼠标左键双击后开始动画
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
偏移量
动画的开始时间可以设置为相对于另一个动画的时间。
示例:bar动画在foo动画开始的 0.5 秒后开始
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
示例:bar动画在foo动画结束的 0.5 秒后开始
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
示例:bar动画在foo动画重复 1 次后开始
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
dur
动画的持续时间
如果没有时间单位,默认为s
end
动画的结束时间,用于约束dur
如果没有时间单位,默认为s
0s为 SVG 加载完成的时候
示例:
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
fill
动画结束后的状态
freeze保持最后一帧remove保持第一帧
默认值为remove
repeatCount
动画的重复次数
- 正整数
indefinitely无穷地
repeatDur
重复动画的总持续时间
- 具体时间
indefinite无穷的
如果同时指定repeatCount和repeatDur,则哪个属性指定的时间更短就用哪个。例如:重复 3 次,每次 3 秒,但总持续时间只有 8 秒,则以 8 秒为准。
示例:
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
values
from、to的语法糖
多个值之间使用;间隔,第一个值是from,最后一个值是to
示例:
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
keyTimes
keyTimes与values和dur搭配使用,keyTimes值的个数必须和values值的个数相同
多个值之间使用;间隔,第一个值是0,最后一个值是1
keyTimes用于设置当动画到达values中某个值时已使用时间占dur的比例
示例:
- 宽度初始值为
100,中间值为50,结束值为0 - 动画的持续时间为
2s - 在
0 * 2s时,宽度为初始值 - 在
0.2 * 2s时,宽度为中间值 - 在
1 * 2s时,宽度为结束值
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
accumulate
重复动画是否积累状态
none无sum积累
默认值为none
注意:
- 如果属性值不支持加法,则忽略此属性,例如
width - 如果使用
to属性,则忽略此属性
示例:
- 第 1 次从 0 开始向 x 正方向移动 50 个单位
- 第 2 次从 50 开始向 x 正方向移动 50 个单位
- 第 3 次从 100 开始向 x 正方向移动 50 个单位
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
示例:
- 第 1 次从 0 开始向 x 正方向移动 50 个单位
- 第 2 次从 0 开始向 x 正方向移动 50 个单位
- 第 3 次从 0 开始向 x 正方向移动 50 个单位
1 | <svg width="300" height="150" xmlns="http://www.w3.org/2000/svg"> |
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2020/01/02/SVG%E4%B8%AD%E7%9A%84animate%E5%85%83%E7%B4%A0/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2020/01/02/SVG%E4%B8%AD%E7%9A%84animate%E5%85%83%E7%B4%A0/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。