infinite
:无限次normal
:正常播放(默认
)
alternate
:轮流反向播放,奇数次数正常播放,偶数次数反向播放
running
:正在播放(默认
)
paused
:暂停播放
none
:不改变默认行为(默认
)
backwards
:在时延所指定时间内或在动画开始前应用开始属性(在第一个关键帧中定义
)
forwards
:在动画结束后保持最后一个属性(在最后一个关键帧中定义
)
both
:向前和向后填充模式都被应用
animation
和@keyframes
声明 。逐帧动画的声明较为简单,使用一张逐帧长图然后配合animation-timing-function: steps()
来完成 。逐帧动画的声明步骤一般如下:
- 准备一张
逐帧长图
,该图像包含动画效果的每一帧且每帧宽高必须一致
- 在
steps()
里声明逐帧长图及其展示方式
- 在指定节点中声明
animation
调用动画
- 在
@keyframes
里声明动画名称和动画每个关键帧的状态
- 在指定节点中声明
animation
调用动画
@keyframes animation-name {from {}to {}}/* 或 */@keyframes animation-name {p1 {}p2 {}p3 {}}
关键帧的取值必须是 from
、 to
或Percentage
。from
可用0%
代替, to
可用 100%
代替,若开始或结束的关键帧无对应的状态,可不用声明 from
或to
。0%
的%
不能省略,否则关键帧解析会失败 。通过animation-fill-mode
属性设置动画结束后的样式 。1.3.2 Animation 动画实践1)自动打字器
很多在线编辑器网站都有一些自动打字的效果,例如CodePen 。很多同学都以为是JS实现的效果,其实查看
Chrome Devtools
发现是纯CSS实现的 。观察多几次自动打字器,可发现其存在以下特点 。- 字体都是等宽字体,等宽字体可保证每次打字时光标的移动距离都是一致的
- 打字器的宽度由最初的
0px
逐渐增加内容后变成最终固定字数的宽度,宽度以等宽字体的个数为准
- 光标随着每打一个字就闪烁一次,打字速度均匀,打字完毕再次重复打字
- 整个打字过程存在两个动画,一个是打字器自增宽度,一个是光标闪烁
- 整个打字过程一闪一闪地完成,根据其断断续续的特点可判断该动画为逐帧动画
2. CSS 动画综合实践(太空舱)2.1 太空舱动画介绍先简单介绍一下这个动画的一些背景:
- 用户点击中间的抽奖按钮后会展示抽奖动画,然后展示将要前进的步数,小人会在跑道上跑动到相应的位置,到达此次终点后,小人展示停止动画并且显示中奖结果 。
- 用户还可以通过长按中奖按钮触发显示五连抽和十连抽,当点击五连抽时,首先会展示抽奖动画,然后展示将要前进的步数,小人会在跑道上瞬间移动到相应的位置,然后展示停止的动画,紧接着展示中奖动画 。十连抽的过程和五连抽相同 。
经验总结扩展阅读
- 为什么CSS中的calc函数可能会不生效?
- day03-CSS
- 有虫子的动画片叫什么?
- 二 Three光线检测-实现摄像机向鼠标点击位置滑动动画
- React动画实现方案之 Framer Motion,让你的页面“自己”动起来
- CSS 渐变锯齿消失术
- vivox60充电动画怎么设置 vivox60如何设置
- 祐太和志保哪部动画里的?
- 秦时明月配音演员表介绍?
- 前端开发日常——CSS动画无限轮播