动效开发
技术能力
- Javascript
- Css
- SVG
- Canvas
我们需要把重心放在CSS3动画上面,因为当红小生就是CSS3结合JavaScript
CSS3
transition
过度动画
如果没有transition元素,元素之间的状态变化过程就会显得生硬而突兀
animation
动画
动画基本框架
(animation:动画名称 动画时长 动画运动速度 延迟时间 执行次数 往返动画)
div{
animation:name 1s linear 1s infinite;
}
@keyframes name {
from{
//CODE
}
to {
//CODE
}
}
学习它之前需要掌握两个基本知识点
- 关键帧
- animation属性
关键帧
@keyframes用来定义动画的具体内容
- 叫什么名字?
- 动画开始,中间状态,结束 做哪些动作
- 每个状态出现在动画过程的哪个时间点
animation属性
- 指定元素用什么动画?(animation-name)
- 动画的持续时间是多少?(animation-duration)
- 浏览器用什么样的时间轴函数来执行该动画?(animation-timing-function)
- 是否需要延时执行该动画?(animation-delay)
- 动画循环执行的次数是多少?(animation-iteration-count)
- 动画执行的方向是什么?(animation-direction)
- 动画填充模式是什么?(animation-fill-mode)
- none 不做任何改变
- backwards 等待状态的时候显示动画第一帧的样式
- forwards 结束状态的时候显示动画的最后一帧的样式
- both forwards+backwards
- 动画执行状态是运行还是暂停?(animation-play-state)
3D
很多时候,仅仅将元素进行二维层面的变换并不能完美表现.3D相对于2D坐标系多了Z轴
- 透视的概念理解
perspective属性
- 空间变换体系
transform-style
- Z 轴位移
translateZ
what is the perspective?
n. 观点;远景;透视图
超越平面的限制在于transform-style: preserve-3d
这个属性设置,默认为flat。这个属性的设置旨在告诉子元素需要遵循怎样的空间体系规则。这个属性不能继承,因此只要有子元素需要设置空间体系规则,就得在父元素声明这个属性
动画的分类
- 补间动画
- 逐帧动画
补间动画
人为设定动画的关键状态(也就是关键帧),而关键帧之间的过渡过程则由计算机处理渲染的动画处理形式。
逐帧动画
原理即将每帧不同的图像连续播放,从而产生动画效果
- 不同的图像
- 连续播放
举例
- GIF
- Jacascript控制动画播放
- Canvas
将动画帧合并成雪碧图,放到 background-image 中,通过 JavaScript 改变 background-position 的值来实现动画的播放。
使用 JavaScript 实现逐帧动画,兼容性佳,且交互灵活