前端动画的总结animation transition transform

最近这段时间一直想写一篇关于前端动画的文章,一方面是之前面试经常问到css3新特性的问题,另一方面也是想把知识梳理一遍。

前端写动画效果无非就是2种,一种就是用css写,另一种就是用js写
1、css3写动画
2、javascript写动画
3、几种动画之间的比较
4、扩展介绍一些使用网站

1、首先看一下css方式大概就是有三种,animation,transition,transform

(1)animation动画(IE9+)animation是结合@keyframes一起使用

属性值注释value
animation-namekey-frame名称自定义(@keyframes)
animation-duration规定动画完成一个周期所花费的秒或毫秒自定义
animation-delay延迟,规定动画何时开始自定义
animation-iteration-count播放次数自定义(无限’infinite’)
animation-direction规定动画是否在下一周期逆向地播放normal:正常方向, alternate:正常与反向交替
animation-play-state规定动画状态运行running 或暂停 paused
animation-timing-function速度曲线详情参考下方
animation-fill-mode规定对象动画时间之外的状态详情参考下方
  • animation-timing-function 速度曲线
    linear:动画从头到尾的速度是相同的。
    ease:默认。动画以低速开始,然后加快,在结束前变慢。
    ease-in:由慢到快
    ease-out:由快到慢
    ease-in-out:由慢到快再到慢
    cubic-bezier(, , , ):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内
    steps(num,start or end)函数 =》为了满足逐帧动画的实现,num是分几次执行,第二个参数表示动画发生变化的时间点steps(1,start) = = step-start,steps(1,end)== step-end
  • animation-fill-mode 规定对象动画时间之外的状态
    none:默认值。不设置对象动画之外的状态
    forwards:设置对象状态为动画结束时的状态
    backwards:设置对象状态为动画开始时的状态
    both:设置对象状态为动画结束或开始的状态
  • 六个属性可以简写

eg: 加一个animation动画名字是running_tv,过渡时间是2S,无限播放,逐帧;
在这里插入图片描述在这里插入图片描述

(2)transition过渡 (IE10+)

  • 元素指定的属性变化时,该属性经过一段时间逐渐的过渡到最终需要的值
  • 特点:需要事件(hover,focus,js)触发,不能重复,不能定义中间状态
  • 初始状态,结束状态,过渡效果,过渡时间,过渡属性
属性值注释value
transition-property指定属性的name,效果none(没有属性),all(所有属性),property(自定义)
transition-duration过渡时间秒/毫秒/自定义
transition-timing-function指定transition效果的转速曲线linear(匀),ease(慢快慢),ease-in(慢开始),ease-out(慢结束), ease-in-out(慢快慢), cubic-bezier(n,n,n,n)
transition-delay定义transition效果开始的时候秒/毫秒/自定义
  • 四个属性可以简写,如 transition: width 1s ease 0.2s

(3)transform 变形(IE9+)
在这里插入图片描述
更详细的transform属性请点击http://www.w3school.com.cn/cssref/pr_transform.asp

2、javascript实现动画

1.setTimeOut/setInterval (不推荐)

2.requestAnimationFrame(兼容性ie10以上)

3、transition和animation的差异:
  • transition动画的执行过程就是声明关键帧的过程,而animation动画的事先声明关键帧(@keyframes),然后再调用关键帧
  • transition动画的执行需要有事件(hover、点击事件)来驱动,而animation动画的执行不一定需要驱动
  • transition 不能无限循环,不能指定播放次数,只能定义头尾帧。
4、扩展介绍实用网站
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值