CSS3动画详解

首先,老阮在他博客讲的很明白了(http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html),这里我来全面总结一下。

一、transition

  注:transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。就不能是auto之类的值。。。

  1.提出背景:正因为css之前没有时间轴,每个动作都是瞬间完成。所以,提出了transition的概念。

  2.作用:就如单词字面意思:“过渡,转变”。

  3.定义:transition是一个简写属性(transition: property duration timing-function delay;)。

    (1)transition-property 属性规定应用过渡效果的 CSS 属性的名称。(当指定的 CSS 属性改变时,过渡效果将开始)。

      transition-property: none(没有属性会获得过渡效果)|all(所有属性将获得过渡效果)|property(过渡效果的属性,多个时用逗号隔开);

    例如:指定宽应用过渡。

div
{
transition-property:width;
-moz-transition-property: width; /* Firefox 4 */
-webkit-transition-property:width; /* Safari 和 Chrome */
-o-transition-property:width; /* Opera */
}

    (2)transition-duration属性规定完成过渡效果需要花费的时间(以秒或毫秒计)。

div
{
transition-duration: 5s;
-moz-transition-duration: 5s; /* Firefox 4 */
-webkit-transition-duration: 5s; /* Safari 和 Chrome */
-o-transition-duration: 5s; /* Opera */
}

    (3)transition-timing-function 属性规定过渡效果的速度曲线。

      transition-timing-function: linear(线性,就是从头至尾匀速)|ease(慢-快-慢)|ease-in(慢速开始~匀速)|ease-out(匀速~慢速结束)|ease-in-out(慢速开始~匀速~慢速结束)|cubic-bezier(n,n,n,n)(在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。)|steps() 分步执行;

    (4)transition-delay 属性规定过渡效果何时开始。

div
{
transition-delay: 2s;
-moz-transition-delay: 2s; /* Firefox 4 */
-webkit-transition-delay: 2s; /* Safari 和 Chrome */
-o-transition-delay: 2s; /* Opera */
}

  4.transition的优点在于简单易用,但是它有几个很大的局限。

    (1)transition需要事件触发,所以没法在网页加载时自动发生。

    (2)transition是一次性的,不能重复发生,除非一再触发。

    (3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

    (4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

这就是animation的提出背景>>

二、animation

animation: name(动画名字或none) duration(动画用时) timing-function(动画速度曲线) delay(延迟时间) iteration-count(播放次数) direction(规定是否应该轮流反向播放动画);

    1.animation-name 属性为 @keyframes 动画规定名称。

    2.animation-duration属性规定动画所花费的时间,默认为o。

    3.animation-timing-function 规定动画的速度曲线(与transition相同)。

    4.animation-delay 属性定义动画何时开始(与transition相同)。

    5.animation-iteration-count 属性定义动画的播放次数(n或infinite无线循环)。

    6.animation-direction 属性定义是否应该轮流反向播放动画(normal正常,alternate轮流反向播放)。

    7.animation-play-state 属性规定动画正在运行还是暂停(running动画正在运行,paused动画停止)。

    8.animation-fill-mode 属性规定动画在播放之前或之后,其动画效果是否可见。

      animation-fill-mode : none (不改变默认行为)| forwards(动画保持在结束状态) | backwards (动画回到第一帧状态)| both(forwards和backwards两者都有);

注:只写chrome兼容写法

div
{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite; /* Safari 和 Chrome */
}

  最后,keyboards定义关键帧

@-webkit-keyframes play {}

@-moz-keyframes play {}

@-ms-keyframes play {}

@-o-keyframes play {}

@keyframes play {}

  

posted @ 2017-08-26 18:04  Candy-Yao  阅读(274)  评论(0编辑  收藏  举报