CSS3动画

153 阅读2分钟

可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。
相比较过渡,动画可以实现更多变化、控制、连续自动播放等效果。

基本使用

动画制作

先定义动画再调用动画

动画定义

keyframes(类似定义类选择器)
@keyframes 动画名称{
  0%{
  width:100px;
  }
  100%{
  width:200px;
  }
}

动画序列

  • 0%是动画的开始,100%是动画的完成,这样的规则就是动画序列
  • 在@keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果,可改变任意多的样式和次数
  • 请用百分比来规定变化发生的时间,或用关键词“from”和“to”,等同于0%和100%
  • 百分比要是整数,因为百分比就是对该案例总时间的划分

动画使用

div{
            width: 200px;
            height: 200px;
            background-color: aqua;
            margin: 100px auto;
            /* 调用动画 */
            animation-name: 动画名称;
            /* 调用时间 */
            animation-duration: 持续时间;
        }
/* 我们想一打开页面,一个盒子绕圈走 */
        @keyframes move {
            0% {
                transform: translate(0px);
            }

            25% {
                transform: translateX(1000px);
            }

            50% {
                transform: translate(1000px, 500px);
            }

            75% {
                transform: translateY(500px);
            }

            100% {
                transform: translate(0px);
            }
        }

        div {
            width: 100px;
            height: 100px;
            background-color: blue;
            animation-name: move;
            animation-duration: 2s;
        }

动画属性


keyframes规定动画
animation所有动画属性的简写属性(animation-play-state除外)
animation-name规定@keyframes动画的名称(必须)
animation-duration规定动画完成一个周期所花费的s或ms,默认是0(必须)
animation-timing-function规定动画的速度曲线,默认是“ease”
animation-delay规定动画何时开始,默认是0
animation-iteration(重复的)-count规定动画被播放的次数,默认是1,还有infinite(无限循环)
animation-direction规定动画是否在下一周期逆向播放,默认是“normal”,如果想反方向回来用“alternate逆播放”
animation-play-state规定动画是否正在运行或暂停,默认是“running”“paused”
animation-fill-mode规定动画结束后状态,保持结束状态forwards,回到起始状态backwards

简写属性


animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 起始或结束状态

速度曲线细节

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