动画相关

161 阅读2分钟

新年许愿活动动画总结

动画要点

  • animation 动画参数

animation: 3s ease-in 1s infinite reverse both running slidein;

描述CSS
@keyframes规定动画。
animation所有动画属性的简写属性,除了 animation-play-state 属性。
animation-name规定 @keyframes 动画的名称。
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。
animation-timing-function规定动画的速度曲线。默认是 "ease"。开始和结束慢速ease-in 开始是慢速 ease-out 结束时慢速 ease-in-out 开始和结束时慢速
animation-delay规定动画何时开始。默认是 0。
animation-iteration-count规定动画被播放的次数。默认是 1。无限:infinite
animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。Alternate逆向
animation-play-state规定动画是否正在运行或暂停。默认是 "running"。
animation-fill-mode规定对象动画时间之外的状态。

规定动画完成一个周期所花费的秒或毫秒。默认是 0。

字母弹出动画

通过 index 做时间差

{this.state.textArr.map((text, index) => (
    <p key={index} style={{ animation: `fadeIn 2s linear ${index + 2}s both`}}>
        {text}
    </p>
))}

五个元素,自底向上弹出

两个元素为一组,设置不同的top, 相同的执行时间,不同的延迟时间

style={{animation: 'wishlistinfoone .8s ease-in-out 1s forwards'}}

style={{animation: 'wishlistinfotwo .8s ease-in-out 1.3s forwards'}}

style={{animation: 'wishlistinfothree .8s ease-in-out 1.6s forwards'}}

tag 随机弹出 抖动一下

随机数我们习惯取整,但是动画间隔根断,直接取1以内的小数即可,加上固定的数做扩大

style={{animation: `keywordsframe .2s ease-in-out ${(Math.random()+.8)}s forwards`}}

许愿瓶碰撞动画

这里碰撞想着挺难,其实就是把简单的生活尝试做一个代码输出

假如有三个元素在瓶子中依次排列 A B C 瓶子向右摇晃

C先撞到瓶子,然后回弹到左边。

B其实没有向右晃动,只是在接触到C的碰撞后,向上运动 然后落下

A由于B和C都晃动,A会向右晃动,然后回到中间落下

animation: 'move1 0.2s 2.5s 3,starBigDownframeone .5s linear forwards 2.5s '

@keyframes move1 {
  from {
    transform: translate(0.3rem, -0.3rem);
  }
  50% {
    transform: translate(0.5, -0.5rem);
  }
  to {
    transform: translate(0.2rem, -0.3rem);
  }
}



@keyframes starBigDownframeone {
	0% {
		transform: translate(0.3rem, -.3rem);
	  }
	  50% {
		transform: translate(1rem, -.3rem);
	  }
	  100% {
		transform: translate(.3rem, -.3rem);
	  }
}