动画(CSS3) animation

动画是CSS3中具备颠覆性的特征之一,可经过设置多个节点来精确控制一个或一组动画,经常使用来实现复杂的动画效果。css

动画序列

  • 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。函数

  • 在@keyframes中规定某项css样式,就能建立由当前样式逐渐改变为新样式的动画效果动画

  • 动画是使元素从一种样式逐渐变化为另外一种样式的效果,能够改变任意多的样式任意多的次数。url

  • 用百分比来规定变化发生的时间,或用关键词"form"和"to",等同于0%和100%。spa

动画基本使用

  1. 先定义动画orm

  2. 再调用动画ci

动画简写格式:animation

animation:动画名称 动画时间 运动曲线 什么时候开始 播放次数 是否反方向 动画起始或结束方向;

 

属性it

描述io

@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

规定动画是否在下一周期逆向播放,默认是“normal“,alternate逆播放

animation-play-state

规定动画是否正在运行或暂停。默认是"running",还有"paused"。

animation-fill-mode

规定动画结束后状态,保持forwards回到起始backwards

 

  • 简写属性里面不包含 animation-play-state

  • 暂停动画:animation-play-state: puased; 常常和鼠标通过等其余配合使用

  • 想要动画走回来 ,而不是直接跳回来:animation-direction : alternate

  • 盒子动画结束后,停在结束位置: animation-fill-mode : forwards

 

速度曲线细节

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

描述

linear

动画从头至尾的速度是相同的。匀速

ease

默认。动画以低速开始,而后加快,在结束前变慢。

ease-in

动画以低速开始。

ease-out

动画以低速结束。

ease-in-out

动画以低速开始和结束。

steps()

指定了时间函数中的间隔数量(步长)

 

 

 关于几个值,除了名字,动画时间,延时有严格顺序要求,其它随意

@keyframes 动画名称 {
from{ 开始位置 } 0%
to{ 结束 } 100%
}

animation-iteration-count:infinite; 无限循环播放
animation-play-state:paused; 暂停动画

 小熊案例:

 

 

 

 div {
            position: absolute;
            width: 200px;
            height: 100px;
            background: url(images/bear.png) no-repeat;
            /* animation:动画名称 动画时间 运动曲线  什么时候开始  播放次数  是否反方向; */
            /* 元素可添加多个动画,用逗号分隔 */
            /* steps(步数),动画分几步完成 */
            animation: run 0.5s steps(8) infinite, move 3s linear forwards;
        }

        @keyframes run {
            0% {
                background-position: 0 0;
            }
            100% {
                background-position: -1600px 0;
            }
        }
        @keyframes move {
            0% {
                left: 0;
            }
            100% {
                left: 50%;
                transform: translateX(-50%);
            }
        }