• 不同于过渡,过渡只能定义首尾两个状态,关键帧动画可以定义多个状态,或者用关键帧的话来说,过渡动画只能定义第一帧和最后一帧这两个关键帧,而关键帧动画则可以定义任意多的关键帧,因而能实现更复杂的动画效果。
  • 二者相同点:都是随着时间改变元素的属性值。
  • 过渡与动画不同点:transition需要触发一个事件(hover事件或click事件等)才会随时间改变其css属性;而animation在不需要触发任何事件的情况下也可以显式的随着时间变化来改变元素css的属性值,从而达到一种动画的效果

    1.定义动画

  • 定义动画的位置没有要求

  • from和0% 代表第一帧
  • to和100% 代表最后一帧
  • 50% 代表动画执行到50%的时候

    1. @keyframes 动画名称{
    2. from {background:red;}
    3. 50% {background:yellow;}
    4. to {background:green;}
    5. }
    1. @keyframes 动画名称{
    2. 0% {background:red;}
    3. 50% {background:yellow;}
    4. 100% {background:green;}
    5. }

    2.执行动画

  • animation:动画名称 动画执行时间 速度效果 延迟时间 执行次数 是否反向;

    • 速度效果:匀速linear
    • 执行次数:无数次infinite
    • 是否反向:反向alternate
    • 如果没有延迟,延迟时间要写0s,带单位,否则容易被解析为执行次数
  • 添加位置

    • animation 添加给元素代表浏览器打开就执行动画
    • animation 添加给元素的:hover,代表鼠标移入才执行动画

      3.暂停动画

  • animation-play-state 检索或设置对象动画的状态

    • 暂停paused

      4.规定动画在播放前后,其动画效果是否可见

  • animation-fill-mode

    • forwards 当动画完成后,保持最后一个属性值
    • backwards 在延迟时间内,在动画显示之前,应用开始属性值
    • both 前面二者都应用

5.了解:动画的每一个独立属性

  • animation-name
    • 检索或设置对象所应用的动画名称
  • animation-duration
    • 检索或设置对象动画的持续时间
    • 说明:animation-duration:3s; 动画完成使用的时间为3s
  • animation-timing-function
    • 检索或设置对象动画的过渡类型
    • 属性值
      • linear:线性过渡
      • ease:平滑过渡
      • ease-in:由慢到快
      • ease-out:由快到慢
      • ease-in-out:由慢到快再到慢
      • step-start:马上跳到动画每一结束桢的状态
  • animation-delay
    • 检索或设置对象动画延迟的时间
    • 说明:animation-delay:0.5s; 动画开始前延迟的时间为0.5s)
  • animation-iteration-count
    • 检索或设置对象动画的循环次数
    • 属性值
      • infinite:无限循环
      • number: 循环的具体次数
  • animation-direction
    • 检索或设置对象动画在循环中是否反向运动
    • 属性值
      • normal:正常方向
      • reverse:反方向运行
      • alternate:动画先正常运行再反方向运行,并持续交替运行
      • alternate-reverse:动画先反运行再正方向运行,并持续交替运行