css3探索之帧动画

烟台/网页设计师/9年前/327浏览
css3探索之帧动画
淡蓝海

帧动画也叫@keyframes动画,被广泛应用于H5页面

本文适合有html和css基础的同学,粗体部分请重点记忆。

   @keyframes帧动画的兼容性:

    IE9以上浏览器,以及主流浏览器 火狐 谷歌 Opera 都是支持的。

为了让IE浏览器直接按最高版本进行渲染,我们一般直接加上这段代码:<meta http-equiv="X-UA-Compatible" content="IE-edge,chrome=1">,说实话这段真的很难记忆。

    帧动画的书写步骤分为两步走:

    1.@keyframes{}  定义动画

    2.animation:    调用动画并定义属性

    下面我们来看如何定义动画

    

    定义动画: @keyframes 动画名称{

                                     0%{background:red; left:0; top:0;}

                                     50%{background:green; left:10px; top:0;}

                                     100%{background:blue; left:30px; top:0;}

                                    }

                                   // 或者from{}

                                           to{}

   这样,我们就定义了一个名字叫“动画名称”的动画,它的内容是3个关键帧,分别是红色背景,然后变绿色背景,右移10像素,然后变蓝色背景,继续右移20像素。如果只有2个关键帧的话,直接用frome{} to{},当然也可以根据情况添加更多的关键帧,用百分比表示。


  调用动画:  用到animation属性

  下面我们看一下,它在css中的样子

  

div{

                            animation-name: 动画名称; 

                            animation-duration: 5s;              //一个周期的时间

                            animation-timing-function: linear;   //速度曲线

                            animation-delay: 2s;                 //延迟

                            animation-iteration-count: infinite; //播放次数 默认是1

                            animation-direction: alternate;      //下一周期,逆向播放,默认是                                                                         normal,不逆向。

                            animation-play-state: running;       //动画是否正在运行,默认是直接运                                                                    行running,若是paused,则不动。

                             }

                                                                 //多浏览器支持需加上前缀

看到这里,有人会说什么乱起八糟的,根本就不好记住嘛!

我们将其进行缩写来看

div{ 

                            animation:动画名称 5s linear 2s  infinite  alternate;


                            -moz-animation: 动画名称 5s linear 2s  infinite  alternate;                                       //Firefox 火狐浏览器

                            -webkit-animation: 动画名称 5s linear 2s  infinite  alternate;                                     //Safari Chrome 苹果浏览器 谷歌浏览器 安卓浏览器

                            -o-naimation: 动画名称 5s linear 2s  infinite  alternate;                                           //Opera   Opera浏览器

                             }

粗体部分就是上面的浓缩版,我顺便加上了多浏览器前缀,我们来分析一下这段浓缩的代码:

我用汉语标注一下是这样的

                           animation:动画名称 5s   linear  2s   infinite  alternate;

                        animation:动画名称 周期   匀速  延迟    循环      倒着放;


看到这里的人,以后都会成为敲代码的高手,一个图片没有,居然还能看到这里,耐心超乎常人,前途不可限量啊!

下面我要上图了:

说了这么多,也掌握了用法,但是不知道该如何运用,下面我上几个用到帧动画的实例,日后举一反三,就靠你自己了。


以前仿作的支付宝首页

这个小箭头,就是用帧动画做的,效果:不断的变大缩小,让人看着有点击的欲望。

我们定义动画的名字叫 pulse

分为三个关键帧,初始缩放比利是1.1倍,50%的时候缩小到0.8倍,100%的时候回到正常比利1。

调用:

看我箭头标注的地方,就是引用我们之前定义的pule这个动画,周期是2秒,不延迟 匀速运动 无限循环,我没有定义的属性,都是默认值,比如 animation-direction: alternate;默认播放一个周期后,是不会倒着放的,

它的默认值是normal,另外这些属性除了前2个外,后面的是可以颠倒先后位置的。


运用到帧动画的例子还有很多,比如下面这个轮播中流动的液体效果:

由于做动态图太麻烦了,我直接给你们链接自己看吧  http://www.teapm.com  

有2种思路:其一是定义2个动画,分别用2张超宽的液体png图,在不同的关键帧中改变background-position中x轴坐标的位置,来实现背景在固定的div中移动的效果,父div盒子设置固定宽度,绝对定位,盒子不动,背景动。

第二种思路,父div盒子设置超级宽的宽度,背景不用特别大,设置repeat-x就行,然后把关键帧设置父div盒子的left值,让div盒子不停的移动。

0
Report
|
2
Share
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
韶音OpenFit 2+
Homepage recommendation
一大波可爱小动物
Homepage recommendation
IP形象——十二牛马
Homepage recommendation
x oasis coffee
Homepage recommendation
大家都在看
Log in