CSS3就是出了不少高大上的功能,3D效果、动画、多列等等。今天写篇文章记录怎么一下怎么用CSS3写一个动画。

丑话还得说前头,IE9以及以下版本不支持CSS3动画(如真要实现可以考虑用js,不过估计效果也不太好)。chrome和safafi建议加上前缀-webkit-以向前兼容老版本。

    今天简单的做一个动画。

首先,先简单画一个div,然后添上背景图片。

  1. <body>
  2. <div class="demo">
  3. 我是demo
  4. </div>
  5. </body>
  1. .demo{
  2. width: 120px;
  3. height: 120px;
  4. margin: 100px auto;
  5. background: url(img/demo.jpg) no-repeat;
  6. }

一个普通的DIV就出来了 如右:

接着我们让它动起来

先写一个方法,这个方法描述这个图片该如何运动

  1. @keyframes run_animation{
  2. from {
  3. transform: rotatez(0deg);
  4. }
  5. to {
  6. transform: rotatez(360deg);
  7. }
  8. }

这个animation_run就是这个方法的名字。等下需要把名字关联到相关的元素里。

from是描述动画的起始状态,to是动画的结束状态。

所以这个方法就是让一个元素按顺时针方向转动360度,非常简单。

from to往往不能满足我们日常开发所需,所以还有这种写法

  1. @keyframes run_animation{
  2. 0%{
         transform:rotatex(0deg);
       }
  3. 16%{
  4. transform: rotatey(-90deg);
  5. }
  6. 33%{
  7. transform: rotatey(-90deg) rotatez(135deg);
  8. }
  9. 50%{
  10. transform: rotatey(225deg) rotatez(135deg);
  11. }
  12. 66%{
  13. transform: rotatey(135deg) rotatex(135deg);
  14. }
  15. 83%{
  16. transform: rotatex(135deg);
  17. }
      100%{
         transform: rotatex(0deg);
      }
  18. }

这种描述让动画可以有更加丰富炫酷的动作。通过百分比来描述每个阶段该元素的动态,0%就是上面说的from,100%就是to。其实这个也很简单对吧~

动画就这么容易的写好了。接下来我们把动画关联到我们的图片上。

  1. .demo{
  2. width: 120px;
  3. height: 120px;
  4. margin: 100px auto;
  5. animation: run_animation 12s linear infinite; /*关联动画名称,定义动画时长,动画播放速度曲线,播放次数*/
  6. background: url(img/demo.jpg) no-repeat 100%;
  7. }

就是这么简单一句代码,图片就能按照我们定义的方法动起来了。

我是demo

要是你现在发现动画没有动,那可能是下面的原因之一:

1.动画名称与@keyframes定义的名称不符;

2.没有定义动画播放时长,默认是0S,即不播放动画。上述代码定义12S;

3.在IE9及以下浏览器运行该代码,IE9及以下不支持CSS3 animation;

4.动画方法定义不对,方法定义的每个阶段中样式都是一样的。像下面这样

  1. @keyframes run_animation{
  2. 0%{
  3. transform: rotatez(90deg);
  4. }
  5. 50%{
  6. transform: rotatez(90deg);
  7. }
  8. 100%{
  9. transform: rotatez(90deg);
  10. }
  11. }

好了,这时候动画应该是动起来了。接着说动画中别的选项:

1.animation-iteration-count:  动画播放次数,想播放几次就写几。我这里用了无限次就是infinite

2.animation-timing-function:动画速度曲线。这个速度曲线有点复杂,涉及到一个贝塞尔函数。不想深入探索贝塞尔就直接用现成的linear、ease、ease-in、ease-out、ease-in-out。要是你懂贝塞尔,可以用cubic-bezier(n,n,n,n),这个比较高大上,我觉得是装逼界的利器。

3.animation-delay:动画可以延时播放,参数也是n S。和animation-duration不一样,animation-duration是动画播放时长。

上面几个属性都可以简写到animation中,就像我上面的栗子一样。

还有逆向播放、暂停这些属性就不说了,有需要可以去看http://www.w3school.com.cn/css3/css3_animation.asp或者

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知 ending~

学习CSS3动画(animation)的更多相关文章

  1. 前端CSS3动画animation用法

    前端CSS3动画animation用法 学习如下动画属性 @keyframes animation-name animation-duration animation-delay animation- ...

  2. css3学习--css3动画详解一(animation属性)

    ***介绍的属性并不完全,写的都是我认为容易混淆的难点属性,所以属性会在最后综合案例展示~ 一.Keyframes介绍: Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主 ...

  3. CSS3 动画 animation和@keyframes

    CSS3 @keyframes 规则 如需在 CSS3 中创建动画,您需要学习 @keyframes 规则. @keyframes 规则用于创建动画.在 @keyframes 中规定某项 CSS 样式 ...

  4. CSS3 动画animation

    关键帧 什么是关键帧.一如上面对Flash原理的描述一样,我们知道动画其实由许多静态画面组成,第一个这样的静态画面可以表述为一帧.其中关键帧是在动画过程中体现了物理明显变化的那些帧. 比如之前的例子中 ...

  5. css3 动画(animation)-简单入门

    css3之动画(animation) css3中我们可以使用动画,由于取代以前的gif图片,flash动画,以及部分javascript代码(相信有很多同学都用过jquery中的animate方法来做 ...

  6. CSS3动画animation认识,animate.css的使用

    CSS动画 可以取代js动画 在移动端会更加流畅! 下面是一个的绘制太阳系各大行星运行轨迹笔记,可以自学参考! -------------------------------------------- ...

  7. CSS3 动画Animation的8大属性

    animation复合属性.检索或设置对象所应用的动画特效. 如果有多个属性值时以","隔开,适用于所有元素,包含伪对象:after和:before 1.animation-nam ...

  8. css3动画animation

    动画:animation   animations这物似乎还是只在webkit,moz核心的浏览器上起作用 <!DOCTYPE html><html lang="en&qu ...

  9. css3学习--css3动画详解二(3d效果)

    一.设置3D场景 perspective:800       //浏览器到物体的距离(像素)perspective-origin:50% (x轴) 50% (y轴)    //视点的位置 transf ...

随机推荐

  1. Hibernate之缓存的原理

    一.关于缓存: 其实对于缓存而言,它其实就是一块内存空间,在这个空间中存放了相互关联的持久化对象, 也就是存在于Session缓存内的对象,那么Session负责根据持久化对象的状态变化来同步的更新数 ...

  2. SQL分组多列统计(GROUP BY后按条件分列统计)

    as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...

  3. Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置

    文章钢要: 1.对服务器进行多用户配置 2.根据不同用户给予不同权限 一.Mosquitto的用户机制 mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作 ...

  4. Object-c 内存管理

                    内存管理 主要内容 1.内存管理的概念 2.引用计数 3.如何持有对象所有权 4.自动释放池 5.@property的使用 什么是内存管理 内存管理是关于如何管理对象生 ...

  5. Myeclipse导包总是报错,jar包路径都没问题

    是访问限制报错. 方法一: 全局属性Project>preferences>java>Compiler>Errors/Warnings>把右侧的[Deprecated a ...

  6. 数据复制与AA双活(1)

    最开始有些概念需要弄明白: 1. 什么是RPO? Wiki: https://en.wikipedia.org/wiki/Recovery_point_objective A recovery poi ...

  7. centos安装tmux过程

    原文:https://gist.github.com/rothgar/cecfbd74597cc35a6018 # Install tmux on Centos release 6.5 # insta ...

  8. linux学习日记之老男孩

    2016年10月5日企业面试题:cp 命令复制文件是如果有覆盖可能的话如何去除确认步骤,如:将/mnt/text.txt 复制 到/temp/text.txt,去除覆盖确认命令.方法:1.加全路径的c ...

  9. CentOS Yum 命令详解

    总所周知,Redhat和Fedora的软件安装命令是rpm,但是用rpm安 装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系,超级麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依 ...

  10. html5 canvas 绘制太极图

    <div class="container"> <canvas id="myCanvas" width="400" hei ...