SVG 路径动画
整理自一次团队分享
前端动画
JavaScript 动画
- setInterval: 性能不佳、缺乏标准、容易控制
- GSAP: 采用requestAnimationFrame、集中绘制,速度更快
- WEB动画API: 新标准,暂时没有浏览器完整支持
CSS3 动画
CSS transition 的动画逻辑由浏览器执行,并且使用使用硬件加速,所以一般它的性能能够比 JavaScript 动画好,但不方便控制,只能实现一些简单的状态变换。
- transition
- animation
HTML绘图方式
- DOM
- Canvas
- WebGL
- SVG
- SVG SMIL 动画(逐步淘汰)
- SVG 路径动画
SVG
SVG 意为可缩放矢量图形(Scalable Vector Graphics),是一种用 XML 定义的语言,用来描述二维矢量及矢量/栅格图形。
特点:
- 与分辨率无关
- 被现代浏览器支持
- 面向未来 (W3C 标准)
- 容易编辑
- 使用CSS 和 JS能很方便的进行控制
- 高度可压缩
SVG 路径动画
See the Pen pyKZbg by DIYgod (@DIYgod) on CodePen.
原理:SVG 其本身也是个 HTML 元素,能被 CSS 属性控制,SVG 自身的一些特殊属性也能被 CSS 支持,甚至在 CSS3 animation 动画中。
用 CSS3 animation 控制 stroke-dasharray 和 stroke-dashoffset 的变化
stroke-dasharray 表示虚线描边
stroke-dashoffset 表示虚线的起始偏移
SVG的其他动画
除了路径动画,配合CSS和JS,SVG还可以做很多DOM做不到的图形动画
比如这里有一个强大的 Snap.svg 动画库:Demo