当前位置:首页剪辑技巧css3逐帧动画,逐帧动画制作方法

css3逐帧动画,逐帧动画制作方法

网页动画图像、Flash 动画和 JavaScript 实现的效果图片,我们用最基础的CSS也能实现。制作一个简单的gif动画图,上图就是效果图。

用CSS3制作动画图,你需要了解两个css属性。

其一是 @keyframes

因为它限定了CSS 样式和动画逐步从目前的样式更改为新的样式的变化过程。浏览器兼容的时候需要在keyframes上加前缀,-webkit-, -ms- 或 -moz- 。

keyframes中有两个属性,from和to,from里面的内容定义动画开始的状态,to记录动画结束的状态。@keyframes后面紧跟的是动画的名字,这个可以自定义取名字,比如我取 gifname,页面某个标签元素使用这个动画时候,就需要用到这个名字。

@keyframes gifname{    from {background: red;}    to {background: yellow;}} @-webkit-keyframes gifname /* Safari 与 Chrome */{    from {background: red;}    to {background: yellow;}}

from和to也可以用百分比来表示动画的过程,可以用百分比的话,就可以把动画的内容定义得更加丰富了。

@keyframes gifname{    0%   {background: red;}    25%  {background: yellow;}    50%  {background: blue;}    100% {background: green;}} @-webkit-keyframes gifname /* Safari 与 Chrome */{    0%   {background: red;}    25%  {background: yellow;}    50%  {background: blue;}    100% {background: green;}}

比如我在一个p元素上用到这个动画

p{    animation: gifname 5s;    -webkit-animation: gifname 5s; /* Safari 与 Chrome */}

其二是 animation

刚刚我们在p元素中看到的animation就是我们要认识的第二个属性。animation其实是一堆属性的简写。比如看下面一句代码:

 animation:gifname 2s step-start 1s infinite alternate;

这一句其实可以写成

    animation-name: gifname;    animation-duration: 2s;    animation-timing-function: step-start;    animation-delay: 1s;    animation-iteration-count: infinite;    animation-direction: alternate;

animation-name:动画名称

这里是 引入 @keyframes 动画的名称。

animation-duration:动画的持续时间

单位可以是秒(s),也可以是毫秒(ms)

animation-timing-function:动画的过度类型

属性值 :默认是 “ease”

linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)

ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)

ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)

ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)

ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)

cubic-bezier(n,n,n,n):在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

step-start:马上跳到动画每一结束帧的状态

animation-delay:动画延迟时间

默认是 0。

animation-iteration-count:动画循环次数

默认是 1。属性值infinite 代表无数次。

animation-direction:动画是否在下一周期逆向地播放

属性值

normal:正常方向

reverse:反方向运行

alternate:动画先正常运行再反方向运行,并持续交替运行

alternate-reverse:动画先反运行再正方向运行,并持续交替运行

另外还有两项属性:

animation-fill-mode:设置动画播放后的效果

取值:

none:初始样式,不改变默认行为.(默认行为)

forwards:动画播放结束后保持最后一个状态;

backwards:结束后保持第一个状态;

animation-play-state :检索或设置对象动画的状态

属性值

animation-play-state:running | paused;

running:运动

paused: 暂停

animation-play-state:paused; 当鼠标经过时动画停止,鼠标移开动画继续执行

到此为止,属性我们都学习完了,开始实践部分:

首先准备好我们需要的图片,这里我使用了九张图片。

我把九张图片放在九个

  • 标签里。所有li标签用ul标签包含起来。然后把ul放在一个p标签里,p设置成一张图片的大小,然后通过逐帧移动ul元素实现动画。

    最后的处理,把超出p元素的部分隐藏即可。然后就得到了文章开始时候的图片了。

    最关键的,上代码:

                    css动画    

    最后唠叨一句,该动画不支持IE9及更早版本的IE浏览器。

    喜欢的话,就点赞支持一下吧!

    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索