其他分享
首页 > 其他分享> > css逐帧动画

css逐帧动画

作者:互联网

我们经常使用css3中的animation动画,比如这样:

.fadeIn{
  animation: fadeIn .5s ease 1s both;
}
@keyframes fadeIn{
  from{
    opacity:0;
  }
  to{
    opacity:1
  }
}

这样就实现了延时1s,一共0.5s的淡入动画。其中ease是animation-timing-function的默认值。
animation-timing-function使用了三次贝塞尔(Cubic Bezier)函数生成速度曲线,可以让我们的动画产生平滑的过渡。
但是有的时候我们并不想要平滑的过渡,比如想要实现下面小人跑动的效果,该怎么实现呢?

或者更简单,把雪碧图拼成这样:

.people{
    width: 100px;
    height: 114px;
    background: url(../images/people.png);
    -webkit-animation:run 1s steps(9) 0s infinite both;
    animation:run 1s steps(9) 0s infinite both;
}

@-webkit-keyframes run {
  to{
    background-position: -900% 0
  }
}

steps函数接受两个参数,第一个参数会根据你指定的步进数量,把整个动画切分为多帧,第二个可选的参数可以是 start 或 end(默认)。这个参数用于指定动画在每个循环周期的什么位置发生帧的切换动作。还可以使用 step-start 和 step-end 这样的简写属性,它们分别等同于 steps(1, start) 和 steps(1, end)
很多时候我们的gif动画都可以直接用css效果实现,快来试试吧!

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .people {
            width: 110px;
            height: 114px;
            overflow: hidden;
        }

        .people img {
            height: 114px;
            animation: move 1s steps(9) 0s infinite both ;
        }

        @keyframes move {
            from {
                transform: translateX(0);
            }
            to {
                transform: translateX(-913px);
            }
        }
    </style>
</head>
<body>
<div class="people">
    <img src="img_1.png" alt="">
</div>
</body>
</html>

标签:动画,100%,animation,steps,逐帧,background,position,css
来源: https://www.cnblogs.com/HGNET/p/16347431.html