随着对html5和css3的运用普及, 页面中的简单动画 也随之常见,animation就被常用,我们运用Animation就能创建自己想要的一些动画效果了。

建议: 如果想要制作简单的不细致的动画效果 animation可以首选,比较好的动画,还是使用flash或js/jquery比较好。

css3动画animation

 一、Keyframes 关键帧  

   在开始介绍Animation之前我们有必要先来了解一下"Keyframes",叫做“关键帧”。 @keyframes开头,后面紧接着是这个“动画的名称”加上一对花括号"{}"

  使用@keyframes规则,你可以创建动画。 创建动画是通过逐步改变从一个CSS样式设定到另一个。

    在动画过程中,您可以更改CSS样式的设定多次。

     指定的变化时发生时使用%,或关键字"from"和"to",与0%到100%相同。
     0%是开头动画,100%是当动画完成(中间可以在多次定义)。

    写法 @keyframes  定义的名称{

           0%(from){定义的样式,其他}

         100%(to){定义的样式,其他}

    }

   兼容:  @ -浏览器号-keyframes  定义的名称{

           0%(from){定义的样式,其他}

         100%(to){定义的样式,其他}

    }

egg:   @keyframes moves{

         0% {background-position: 0 0;}
         50% {background-position: -180px 0;}
         100% {background-position: 0 0;}

}

二、animation的动画属性

 (1)animation-name   规定需要绑定到选择器的 keyframe 名称
 (2)animation-duration  规定完成动画所花费的时间,以秒或毫秒计
 (3)animation-timing-function 规定动画的速度曲线。如linear直线。
 (4)animation-delay 规定在动画开始之前的延迟。
 (5)animation-iteration-count 规定动画应该播放的次数。 加入infinite关键字,可以让动画无限次播放。
 (6)animation-direction 规定是否应该轮流反向播放动画,
 (7)animation-fill-mode 动画结束以后,会立即从结束状态跳回到起始状态。如果想让动画保持在结束状态,需要使用其属性令其为forwards。
 (8)animation-play-state:  如果鼠标移走,色块立刻回到动画开始状态。如果想让动画保持突然终止时的状态,则该属性值为paused 设置动画当前状态,默认是 running ,为执行状态,可以设置为 paused 为暂停

egg:   .demo{
       width: 50px;
       height: 50px;
       background: blue;
       -webkit-animation-name:'moves';/*动画属性名,也就是我们前面keyframes定义的动画名*/
       -webkit-animation-duration: 10s;/*动画持续时间*/
       -webkit-animation-timing-function: ease-in; /*动画频率*/
       -webkit-animation-delay: 2s;/*动画延迟时间*/
       -webkit-animation-iteration-count: 10;/*定义循环次数,infinite为无限次*/
       -webkit-animation-direction: alternate;/*定义动画方式*/
  }

为了方便可以简写 规格如下:

    animation: name  duration  timing-function  delay  iteration-count  direction  play-state  fill-mode;

    egg: animation: moves 10s ease-in 2s 10 alternate 

三、animation各属性讲解

   (1)animation-name 属性为 @keyframes 动画指定名称

      语法: animation-name: keyframename|none;

       css3动画animation

    egg:    animation-name:mymove;

               -webkit-animation-name:mymove;

   (2)animation-duration 设置对象动画的播放持续时间    值单位可以是秒(s)或毫秒(ms)

      语法: animation-duration: time;

        css3动画animation

 (3)animation-timing-function 规定动画的速度曲线 (动画播放时的运动方式

       animation-timing-function使用的数学函数,称为三次贝塞尔曲线,速度曲线。使用此函数,您可以使用您自己的值,或使用预先定义的值之一:

    语法:animation-timing-function:ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<num1>, <num2>, <num3>, <num4>)

     css3动画animation

  egg:  自定义     .demo { animation-function: cubic-bezier(0.25,0.1,0.25,1);/*自定义的贝塞尔曲线*/ }

   (4)animation-delay 规定在动画开始之前的延迟(几秒后开始执行动画)。

      语法:animation-delay: time;

        css3动画animation

    egg:   .demo {

                 animation-delay:2s;/*动画将于2s后执行*/

            }

     (5)animation-iteration-count 规定动画应该播放的次数。 加入infinite关键字,可以让动画无限次播放。

        语法: animation-iteration-count: n | infinite

          css3动画animation

    (6)animation-direction 规定是否应该轮流反向播放动画

           注意:如果动画被设置为只播放一次,该属性将不起作用

       语法:animation-direction: normal | reverse | alternate | alternate-reverse | initial | inherit;

         css3动画animation

     (7)animation-fill-mode 动画结束以后,会立即从结束状态跳回到起始状态。如果想让动画保持在结束状态,需要使用其属性令其为forwards。

        语法:animation-fill-mode: none | forwards | backwards | both

          css3动画animation

    (8)animation-play-state: 用来控制元素动画的播放状态

        语法:animation-play-state: paused | running(默认)

         css3动画animation

 

下面给看几个做的demo: --简单粗糙

  1、人物图片 走动效果(一个走动,一个跳跃,一个高尔夫挥球)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎访问 http://www.cnblogs.com/wuchuanlong/</title>
<link rel="icon" type="image/x-icon" href="images/favicon.ico" >

<style>  
/*move_img.png上面有 几个小图  它的移动位置是100除以几 约等(=)差%,后面的移动位置即加差(间隔距离要一样) 知道总和100% 一个循环*/  
body{  font-family: "Microsoft YaHei"; background-color:#9BD2FF }
.elepent_mid{ margin:0 auto; width:580px; position:relative;}
.move_go{ 
   background:url(move_01.png) no-repeat; width:180px; height: 300px; position:absolute; 
    border:1px solid red; 
   animation:chan_run 1s step-start infinite;
   -moz-animation:chan_run 1s step_start infinite;
   -webkit-animation:chan_run 1s step_start infinite;
 }
 @keyframes chan_run{
    0% {background-position: 0 0;}
    14.3% {background-position: -180px 0;}
    28.6% {background-position: -360px 0;}
    42.9% {background-position: -540px 0;}
    57.2% {background-position: -720px 0;}
    71.5% {background-position: -900px 0;}
    85.8% {background-position: -1080px 0;}
    100% {background-position: 0 0;}
  }
  @-moz-keyframes chan_run{
    0% {background-position: 0 0;}
    14.3% {background-position: -180px 0;}
    28.6% {background-position: -360px 0;}
    42.9% {background-position: -540px 0;}
    57.2% {background-position: -720px 0;}
    71.5% {background-position: -900px 0;}
    85.8% {background-position: -1080px 0;}
    100% {background-position: 0 0;}
  }
  @-webket-keyframes chan_run{
    0% {background-position: 0 0;}
    14.3% {background-position: -180px 0;}
    28.6% {background-position: -360px 0;}
    42.9% {background-position: -540px 0;}
    57.2% {background-position: -720px 0;}
    71.5% {background-position: -900px 0;}
    85.8% {background-position: -1080px 0;}
    100% {background-position: 0 0;}
  }
  
 /*第二个原地移动*/
 .secd_yidong{ 
   background:url(pepel_02.png) no-repeat; height:319px; width:150px; position:absolute; top:320px;
   animation:move_two 3s step-start infinite;
   -moz-animation:move_two 3s step-start infinite;
   -webkit-animation:move_two 3s step-start infinite;
  }
  @keyframes move_two{
    0%{ background-position:0 0;}
    25%{ background-position:-150px 0}
    50%{ background-position:-300px 0}
    75%{ background-position:-450px 0}
    100%{ background-position:0 0}
  }
  @-webkit-keyframes move_two{
    0%{ background-position:0 0;}
    25%{ background-position:-150px 0}
    50%{ background-position:-300px 0}
    75%{ background-position:-450px 0}
    100%{ background-position:0px 0}
  }
   @-moz-keyframes move_two{
    0%{ background-position:0 0;}
    25%{ background-position:-150px 0}
    50%{ background-position:-300px 0}
    75%{ background-position:-450px 0}
    100%{ background-position:0px 0}
  }
  
   /*第三个原地移动*/
 .third_03{ 
  background:url(jump_03.png) no-repeat; height:131px; width:61px; position:absolute; top:320px; left:240px; right:0; bottom:0;
   animation:move_03 1s step-start infinite; overflow:hidden;
   -moz-animation:move_03 1s step-start infinite;
   -webkit-animation:move_03 1s step-start infinite;
  }
  @keyframes move_03{
    0%{ background-position:65px 0;}
    11.1%{ background-position:-65px 0}
    22.2%{ background-position:-130px 0}
    33.3%{ background-position:-195px 0}
    44.4%{ background-position:-270px 0}
    55.5%{ background-position:-335px 0;}
    66.6%{ background-position:-400px 0}
    77.7%{ background-position:-465px 0}
    88.8%{ background-position:-530px 0}
    99.9%{ background-position:-595px 0}
    100%{ background-position:0 0}
  }
   @-moz-keyframes move_03{
    0%{ background-position:0 0;}
    11.1%{ background-position:-65px 0}
    22.2%{ background-position:-130px 0}
    33.3%{ background-position:-195px 0}
    44.4%{ background-position:-270px 0}
    55.5%{ background-position:-335px 0;}
    66.6%{ background-position:-400px 0}
    77.7%{ background-position:-465px 0}
    88.8%{ background-position:-530px 0}
    99.9%{ background-position:-595px 0}
    100%{ background-position:0 0}
  }
   @-webkit-keyframes move_03{
    0%{ background-position:0 0;}
    11.1%{ background-position:-65px 0}
    22.2%{ background-position:-130px 0}
    33.3%{ background-position:-195px 0}
    44.4%{ background-position:-270px 0}
    55.5%{ background-position:-335px 0;}
    66.6%{ background-position:-400px 0}
    77.7%{ background-position:-465px 0}
    88.8%{ background-position:-530px 0}
    99.9%{ background-position:-595px 0}
    100%{ background-position:0 0}
  }
</style>
</head>
<body>
 <div class="elepent_mid">
  <!--第一个-->
   <div class="move_go"></div>
  <!--第二个移动-->
  <div class="secd_yidong"></div>
  <!--第三个移动-->
  <div class="third_03"></div>
 </div>
</body>
</html>
View Code

相关文章: