08.transfrom、transition、animation区别

参考这个transfrom、transition、animation区别

transfrom

transform是静态属性,非动画属性,和margin-left、margin-top类似。

  • translate:平移,类似position:relative;translate()分三种情况:
    • translate(x, y) // 水平、垂直方向移动
    • translateX(x) // 水平方向移动,相当于translate(x, 0)
    • translateY(y) // 垂直方向移动,相当于translate(0, y)
  • scale:缩放,x,y可以是负数,负数的情况缩放并反转
    • scale(x, y) // 水平、垂直方向缩放,第二个参数未提供则取与第一个一样的值
    • scaleX(x) // x轴缩放
    • scaleY(y) // y轴缩放
  • rotate:旋转,整数顺时针,负数逆时针
    • transform:rotate(90deg);
    • transform-origin:top center; // 变形的基点,默认中心点
  • skew:斜角变换
    • skew(x, y) // 沿x轴、y轴进行扭曲变形,第二个参数未提供取值为0
    • skewX(x) // 沿x轴进行扭曲变形
    • skewY(y) // 沿y轴进行扭曲变形
  • matrix:将所有的2D效果全部组合在了一起使用

transition

animation的简化版本

  • transition: all 1s ease 0; // 过渡效果的css属性名称、过渡效果时间、速度曲线、延迟时间

那么简化了哪些地方?对比下面animation的属性,属性越多,控制的动画功能越多

animation

transition虽然简单好用,但是我们会发现它受到各种限制

1:transition需要一个事件来触发,比如hover,所以没法在网页加载时自动发生

2: transition是一次性的,不能重复发生,除非一再触发。

3: transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

4:一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

(为了表达清晰,上述4条限制是我引用阮一峰大神博客里的简介)

为了突破这些限制,animation出来了

  • animation: move 1s ease 0 infinite alternate; // keyframe名字、过渡效果时间、速度曲线、延迟时间、循环次数、是否轮流反向播放动画
  • 定义keyframe:@keyframes name {}

transition和animation做动画

常和transfrom配合使用,区别如下:

transition animation
触发条件 通常和hover等事件配合,由事件触发 和gif差不多,立即播放
循环 不能循环 可设置循环次数
精确性 只能设置头尾,所有样式属性都要一起变化 可以设置每一帧的时间和样式,每一帧变化的样式可以单独设置
与JavaScript的交互 tranistion和js的结合更强大。js设定要变化的样式,transition负责动画效果 与js交互不是很紧密

这篇也挺好关于css3里的transition和animation区别介绍