本文介绍和动画相关的两个属性。
描述一个属性由一个状态过渡到另外一个状态;
.trantion-thing {transition: color 2s 100ms;}
.transtion-thing {transition:$props$duration$timing-function (optional)$transition-delay (optional)}
相比 transition
, animation 比 transition 多了个执行次数的属性;
.animated-thing {animation: black-to-white 1s linear 1;}@keyframes black-to-white {0% { background: #000; }100% { background: #fff; }}
注意 animation 最后的一个数字 1, 其表示执行次数, 如果不传该值, 默认为 1。来看下 animation 的几个属性
.animated-thing {animation:$name (相比 transition 独有)$duration$timing-function (optional)$animation-delay (optional)$iteration-count (optional) (相比 transition 独有)}
animation
animation:name
要与 @keyframes 连用;animation-duration: 2s
完成从 0% 到 100% 一次动画所需时间;animation-timing-function
。step()
逐帧效果; 此外还有 linear
、ease
等线性效果, 也可以使用 cubic-bezier
; (记忆方法: 可将 ease 理解成 slow, slow in 就是减速, slow out 就是加速;)animation-delay
;animation-iteration-count
: infinate(无限次);animation-direction
: normal(默认)、alternate (偶数次反方向播放);animation-play-state
: running(默认)、paused(暂停效果); 借由该属性可以完成鼠标移动移出时的暂停、播放效果;animation-fill-mode
: none/forwards/backwords/both;现阶段理解: Animation
的可控粒度比 Transition
更为细致, transition 可以实现的效果 animation 都能实现。然后有以下几种动效必须使用 animation。
单行的打字效果
可以使用 css 进行实现, 思路借助 animaition
的 step
以及文本的宽度;在变化前后的两个位置上, 改变布局相关属性会使动画失效。比如 display、text-align
。