写在前面
css3的animation可以实现很多炫酷的动画,让自己的网页看起来更加生动灵活,下面,来看一下都有些什么玩意属性。
动画属性
首先,我们看一下具体写法
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
具体化表现形式
animation:myAnim 1s linear 1s infinite alternate both running;
分别是:
关键帧名字,
1个周期1秒,
动画速度相同,
动画1秒后开始,
无限播放,
可以反向播放,
动画在两个方向上扩展动画属性,
开始播放动画
都有什么属性呢
-
animation-name
:指定要绑定到选择器的关键帧的名称。 -
animation-duration
:定义动画完成一个周期需要多少秒或毫秒 -
animation-timing-function
:指定动画将如何完成一个周期。
值 | 说明 |
linear | 动画从头到尾的速度是相同的。 |
ease | 默认。动画以低速开始,然后加快,在结束前变慢。 |
ease-in | 动画以低速开始。 |
ease-out | 动画以低速结束。 |
ease-in-out | 动画以低速开始和结束。 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 |
step-start | 在变化过程中,都是以下一帧的显示效果来填充间隔动画 |
step-end | 在变化过程中,都是以上一帧的显示效果来填充间隔动画 |
steps() | 可以传入两个参数,第一个是一个大于0的整数,他是将间隔动画等分成指定数目的小间隔动画,然后根据第二个参数来决定显示效果。第二个参数设置后其实和step-start,step-end同义,在分成的小间隔动画中判断显示效果。 |
其中 cubic-bezier(n,n,n,n)
称为三次贝塞尔曲线,速度曲线,反正我也不知道怎么算的。
可以通过工具定制=》戳他
-
animation-delay
:属性定义动画什么时候开始。 -
animation-iteration-count
:定义动画播放多少次数。
值 | 说明 |
n | 一个数字,定义应该播放多少次动画 |
infinite | 指定动画应该播放无限次(永远) |
-
animation-direction
:定义是否循环交替反向播放动画。
值 | 说明 |
normal | 默认值。动画按正常播放。 |
reverse | 动画反向播放。 |
alternate | 动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放。 |
alternate-reverse | 动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放。 |
initial | 设置该属性为它的默认值。 |
inherit | 从父元素继承该属性。 |
-
animation-fill-mode
:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
值 | 说明 |
none | 默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。 |
forwards | 在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。 |
backwards | 动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 “normal” 或 “alternate” 时)或 to 关键帧中的值(当 animation-direction 为 “reverse” 或 “alternate-reverse” 时)。 |
both | 动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。 |
initial | 设置该属性为它的默认值。 |
inherit | 从父元素继承该属性。 |
-
animation-play-state
:指定动画是否正在运行或已暂停。
值 | 说明 |
paused | 指定暂停动画。 |
running | 指定正在运行的动画。 |
keyframes属性
keyframes
:定义动画规则,关键帧。
值 | 说明 |
animationname | 必需的。定义animation的名称。 |
keyframes-selector | 必需的。动画持续时间的百分比。 |
css-styles | 必需的。一个或多个合法的CSS样式属性 |
至于写法,一种用from到to,一种用0%到100%
@keyframes myAnim{
from { background: #f00; }
50% { background: #0f0; }
to { background: yellowgreen; }
}
@keyframes myAnim{
0% { background: #f00; }
50% { background: #0f0; }
100% { background: yellowgreen; }
}