CSS3 动画

159 阅读3分钟

CSS3 动画

动画(animation) 是CSS3具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果

相比于过渡,动画可以实现更多变化,更多控制,连续自动播放等效果

语法

制作动画分为两步:

  1. 先定义动画

  2. 再使用(调用)动画

  3. 用keyframes定义动画(类似定义类选择器)

@keyframes 动画名称 {
    0% {
        width: 100%;
    }
    100% {
        width: 200px;
    }
}

动画序列

  1. 0% 是动画的开始,100% 是动画的完成,这样的规则就是动画在序列
  2. @keyframes 中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果
  3. 动画是使元素从一种样式逐渐变化为另一种样式的效果,您可以改变任意多的样式任意多的次数
  • 里面的百分比要是整数
  • 里面的百分比就是总的时间的划分
  1. 请用百分比来规定变化发生的时间,活氧关键词fromto,等同于0%100%

  2. 元素使用动画

div {
    width: 200px;
    height: 200px;
    background-color: aqua;
    margin: 100px auto;
    /* 调用动画 */
    animation-name: 动画名称;
    /* 持续时间 */
    animation-duration: 持续时间;
}

动画常用属性

属性描述
@keyframes规定动画
animation所有动画属性的简写属性,除了animation-play-state属性
animation-name规定@keyframes动画的名称(必须的)
animation-duration规定动画完成一个周期所花费的秒或毫秒,默认是0(必须的)
animation-timing-function规定动画的速度曲线,默认是ease
animation-delay规定动画何时开始,默认是0
animation-iteration-count规定动画被播放的次数,默认是1,还有infinite
animation-direction规定动画是否在下一周期逆向播放,默认是normalalternate逆播放
animation-play-state规定动画是否正在运行或暂停,默认是running,还有puased
animation-fill-mode规定动画结束后状态,forwards保持,backwards回到起始

动画简写

animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或着结束的状态 
animation: myfirst 5s linear 2s infinite alternate;
  • 简写属性里里面不包含animation-play-state
  • 暂停动画:animation-play-state: puased;经常和鼠标经过等其他配合使用
  • 想要动画走回来,而不是直接跳回来:animation-direction: alternate;
  • 盒子动画结束后,停在结束位置:animation-fill-mode: forwards;
  • 一个元素可以设置多组动画
animation: bear 1s step(8) infinite, move 3s forwards;

速度曲线细节

animation-timing-function:规定动画的速度曲线,默认是ease

描述
linear动画从头到尾的速度是相同的 匀速
ease默认 动画以低速开始,然后加快,在结束前变慢
ease-in动画以低速开始
ease-out动画以低速结束
ease-in-out动画以低速开始和结束
steps()指定了时间函数中的间隔数量(步长)一步一步走