Skip to main content

动画

动画其实就是过渡的加强版

其可以一直执行过渡

定义动画#

@keyframes box1an {            0%{
            }            50%{                transform: translate(250px,0) rotate(-360deg);            }            100%{                transform: translate(500px,0) rotate(0deg);            }
        }

关键子@keyframes+动画名称来定义

0%-100%是这个动画完成的过程,在不同的进度下,动画发展到的状态在括号中填写。程序会自动执行变化过程

调用动画#

在要调用的元素里写animation属性

.box1{
            width: 200px;            height: 200px;            background: red;            /*动画名称*/            animation-name:box1an ;            /*持续时间*/            animation-duration: 2s;            /*运动规则*/            animation-timing-function:ease;            /*延迟开始*/            animation-delay:1s;            /*执行次数,无限是infinite*/            animation-iteration-count: infinite;            /*每次结束一个动画循环后,下一次的执行样式*/            animation-direction: alternate;            transition: all 2s .5s;

        }

有几个要单独讲下

animation-timing-function#

这是一个曲线运动的规则,除了我们知道的几个css运动规则(ease,ease-in,ease-out,linear)外,

它还提供了一个steps值,就是每一阶段分多少步完成

例子:

@keyframes box1an {            0%{                width: 0;            }            50%{                width: 200px;                background: yellow;            }            100%{                width: 400px;                background: blue;            }        }        .box1{
            width: 400px;            height: 200px;            background: red;            animation: box1an 5s steps(4) .5s infinite alternate ;        }

这里我们steps是4步,一共2个阶段,所以分8步来完成,看下效果

animation-direction#

默认值normal,动画结束后,回到起始位置进行下一次循环

插入一个循环动画

alternate动画交替反向运行,反向运行时,动画按步后退,同时,带时间功能的函数也反向,比如,ease-in 在反向时成为ease-out。计数取决于开始时是奇数迭代还是偶数迭代

reverse:反向运行动画,每周期结束动画由尾到头运行。

alternate-reverse:反向交替, 反向开始交替

动画第一次运行时是反向的,然后下一次是正向,后面依次循环。决定奇数次或偶数次的计数从1开始。

animation-fill-mode#

字面意思就是动画结束时候的状态

默认值none

forwards 就是动画结束时,停止在结束时的状态

backwards就是动画结束时,回到开始时的状态

一般这个属性是不会和无限循环一起出现的。

animation-play-state#

这是个控制动画开始,暂停的属性。

初始值肯定是running了,暂停值是paused

我们可以设定一个鼠标经过就暂停的代码

.box1:hover{            animation-play-state: paused;        }

来看下效果

动画简写#

可以把多个属性写在一起简化

基本格式:

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

例子:

animation: box1an 2s ease .5s infinite alternate ;

没有的或者用默认的就不写,写下一个