学习CSS3动画(animation)

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

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

    今天简单的做一个动画。

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

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

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

接着我们让它动起来

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

@keyframes run_animation{
    from {
        transform: rotatez(0deg);
    }
    to {
        transform: rotatez(360deg);
    }
}

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

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

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

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

@keyframes run_animation{
    0%{     transform:rotatex(0deg);   }
    16%{
        transform: rotatey(-90deg);
    }
    33%{
        transform: rotatey(-90deg) rotatez(135deg);
    }
    50%{
        transform: rotatey(225deg) rotatez(135deg);
    }
    66%{
        transform: rotatey(135deg) rotatex(135deg);
    }
    83%{
        transform: rotatex(135deg);
    }  100%{     transform: rotatex(0deg);  }
}

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

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

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

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

    

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

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

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

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

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

@keyframes run_animation{
    0%{
        transform: rotatez(90deg);
    }
    50%{
        transform: rotatez(90deg);
    }
   100%{
        transform: rotatez(90deg);
    }
}

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

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~

时间: 2024-12-25 13:01:37

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

使用CSS3动画 animation 来控制元素的显示和隐藏

CSS3中 animation 和 transition 俩样式都能创建动画效果,而且是后台C++执行的,所以效率比普通jQuery的js模拟动画的效率高很多,所以建议大家能用css实现的效果都用css. transition的使用比较简单,这里就不介绍了,着重为大家介绍下 animation . animation 的css属性有很多,本文通过 animation-name 来控制启动动画和转换动画,以下是一个通过 animation 来控制元素的显示和隐藏的例子(仅支持webkit): <!

css3动画-animation

animation驱使一组css style变化到另外一组css style,它可以定义keyframes的集合,指定style的开始和结束状态,它是transition的增强. 配置animation animation-delay:从加载到开始执行的延迟 animation-direction:normal|reverse|alternate|alternate-reverse   参考 normal:往前执行,完成后又回到原点 reverse:和定义的方向相反,完成后回到原点开始执行 al

css3 动画 animation transform

<!DOCTYPE html><!-- saved from url=(0073)http://www.w2bc.com/demo/201504/2015-04-27-jquery-tecent-focus/index.html --><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <m

css3 动画(animation)-简单入门

css3之动画(animation) css3中我们可以使用动画,由于取代以前的gif图片,flash动画,以及部分javascript代码(相信有很多同学都用过jquery中的animate方法来做一些动画).具体如何使用呢??? 首先定义一个动画,然后引用动画. 定义一个动画要使用@keyframes,然后跟上你要定义的动画的名字.关键字"from"表示开始, "to"表示结束,等同于0% 和 100%.最好使用百分比来表示变化发生的时间,这样的话还可以定义从开

css3动画-animation属性

在开始介绍Animation之前我们有必要先来了解一个特殊的东西,那就是"Keyframes",我们把他叫做"关键帧",玩过flash的朋友可能对这个东西并不会陌生.下面我们就一起来看看这个"Keyframes"是什么东西.前面我们在使用transition制作一个简单的transition效果时,我们包括了初始属性和最终属性,一个开始执行动作时间和一个延续动作时间以及动作的变换速率,其实这些值都是一个中间值,如果我们要控制的更细一些,比如说我要

CSS3 动画animation

关键帧 什么是关键帧.一如上面对Flash原理的描述一样,我们知道动画其实由许多静态画面组成,第一个这样的静态画面可以表述为一帧.其中关键帧是在动画过程中体现了物理明显变化的那些帧. 比如之前的例子中,元素div由50X50红色的大小变化到状态100X100 黄色的过程中,这一头一尾的两个状态起到了对动画定义的关键作用.所以这两个状态就是整个动画的关键帧. @keyframes 定义动画关键帧 通过之前的胡说现在我们看到@keyframes就不会觉得这个@符号有多别扭了.我们使用它来定义动画的关

记录CSS3动画animation学习小心得

上个星期在学习JS之余,温习CSS3,在网上看到一个3D立体球的效果,于是自己也按照上面的方法写了一个: 效果(请用chrome浏览): http://htmlpreview.github.io/?https://github.com/yuhaod1/Blog/blob/master/Blog/css3%E7%AB%8B%E4%BD%93%E7%90%83/css3%E7%AB%8B%E4%BD%93%E7%90%83.html 只做了chrome下的效果,不做其它浏览器的兼容: 当时写完代码测

CSS3 动画Animation的8大属性

animation复合属性.检索或设置对象所应用的动画特效. 如果有多个属性值时以","隔开,适用于所有元素,包含伪对象:after和:before 1.animation-name  检索或设置对象所应用的动画名称 必须与规则@keyframes配合使用,eg:@keyframes animations  animation-name:animations; 2.animation-duration  检索或设置对象动画的持续时间 animation-duration:3s;    

css3动画animation

@keyframes film_out{ from{ transform: scale3d(1,1,1) rotate(0); opacity: 1; } to{ transform: scale3d(0.7,0.7,0.7) rotate(90deg); opacity: 0; } } div { animation: film_out 5s linear 2s infinite alternate forwards; -webkit-animation: film_out 5s linear