SVG动画
动画原理
SMIL for SVG
- 参考资料
http://www.w3.org/TR/SVG/animate.html
http://www.zhangxinxu.com/wordpress/?p=4333 - 动画标签
<animate>
、<animateTransform>
、<animateMotion>
… - 动画元素、属性定位以及动画参数设置
attributeName、attributeType
from、to、dur、repeatCount、fill…
calcMode…
定位动画目标
- Internal Resource Identifier定位
1 | <animate xlink:href="url(#rect1)"></animate> |
- 被包含在目标元素里
1 | <rect x="0" ...> |
基本动画
- 设置要进行动画的属性以及变化范围、时间长度
1 | <animate xlink:herf="url(#rect1)" |
svg创建默认的大小为300*1501
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35<style>
html, body, svg{margin: 0;padding: 0;width: 100%;height: 100%}
</style>
<svg>
<rect x="100" y="100" width="100" height="100" fill="red">
<animate id="goright"
attributeType="XML"
attributeName="x"
begin="0; goleft.end + 1s"
from="100"
to="500"
dur="3s"
fill="freeze"
repeatCount="indefinite">
</animate>
<animate id="goleft"
attributeType="XML"
attributeName="x"
begin="goright.end + 1s"
from="500"
to="100"
dur="3s"
fill="freeze"
repeatCount="indefinite">
</animate>
<animate
attributeType="XML"
attributeName="fill"
from="red"
to="yello"
dur="6s"
fill="freeze">
</animate>
</rect>
</svg>
变换动画
- 设置要进行动画的属性以及变化范围、时间长度
1 | <animateTransform xlink:href="url(#rect1)" |
1 | <style> |
示例:点击查看
轨迹移动
- 设置轨迹路径
1 | <animateMotion xlink:href="url(#rect1)" |
1 | <svg viewBox="-400 -400 800 800"> |
脚本动画
Scripting Animation
- 核心思想
requestAnimationFrame(update) - 示例
力导向图
弹簧模型
- 两个点之间:
Fi = k · xi (假设弹性系数是一样的) - 可以计算合:
F = ∑Fi - 加速度:
a = F / m (可以假设每个点质量一样) - 速度:
v = v0 + a · Δt (Δt 为一帧的时间) - 位移:
s = s0 + v · Δt
1 | <style> |
示例:点击查看
根据慕课网课程整理